986 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=-lzcnt,+sse2 | FileCheck %s -check-prefixes=NOLZCNT3; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+lzcnt,+sse2 | FileCheck %s -check-prefixes=LZCNT,SSE24; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+lzcnt,+sse4.2 | FileCheck %s -check-prefixes=LZCNT,SSE425; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+lzcnt,+avx | FileCheck %s -check-prefixes=LZCNT,AVX16; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+lzcnt,+avx2 | FileCheck %s -check-prefixes=LZCNT,AVX27; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+lzcnt,+avx512f | FileCheck %s -check-prefixes=LZCNT,AVX512,AVX512F8; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+lzcnt,+avx512vl,+avx512bw,+avx512dq | FileCheck %s -check-prefixes=LZCNT,AVX512,AVX512BW9; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mattr=+lzcnt,+avx512vl,+avx512bw,+avx512dq,+avx512cd | FileCheck %s -check-prefixes=LZCNT,AVX512CD10 11; Verify the cost of scalar leading zero count instructions.12 13declare i64 @llvm.ctlz.i64(i64, i1)14declare i32 @llvm.ctlz.i32(i32, i1)15declare i16 @llvm.ctlz.i16(i16, i1)16declare i8 @llvm.ctlz.i8(i8, i1)17 18define i64 @var_ctlz_i64(i64 %a) {19; NOLZCNT-LABEL: 'var_ctlz_i64'20; NOLZCNT-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %ctlz = call i64 @llvm.ctlz.i64(i64 %a, i1 false)21; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %ctlz22;23; LZCNT-LABEL: 'var_ctlz_i64'24; LZCNT-NEXT: Cost Model: Found costs of 1 for: %ctlz = call i64 @llvm.ctlz.i64(i64 %a, i1 false)25; LZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %ctlz26;27 %ctlz = call i64 @llvm.ctlz.i64(i64 %a, i1 0)28 ret i64 %ctlz29}30 31define i64 @var_ctlz_i64u(i64 %a) {32; NOLZCNT-LABEL: 'var_ctlz_i64u'33; NOLZCNT-NEXT: Cost Model: Found costs of RThru:1 CodeSize:2 Lat:2 SizeLat:2 for: %ctlz = call i64 @llvm.ctlz.i64(i64 %a, i1 true)34; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %ctlz35;36; LZCNT-LABEL: 'var_ctlz_i64u'37; LZCNT-NEXT: Cost Model: Found costs of 1 for: %ctlz = call i64 @llvm.ctlz.i64(i64 %a, i1 true)38; LZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %ctlz39;40 %ctlz = call i64 @llvm.ctlz.i64(i64 %a, i1 1)41 ret i64 %ctlz42}43 44define i32 @var_ctlz_i32(i32 %a) {45; NOLZCNT-LABEL: 'var_ctlz_i32'46; NOLZCNT-NEXT: Cost Model: Found costs of RThru:1 CodeSize:3 Lat:2 SizeLat:3 for: %ctlz = call i32 @llvm.ctlz.i32(i32 %a, i1 false)47; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %ctlz48;49; LZCNT-LABEL: 'var_ctlz_i32'50; LZCNT-NEXT: Cost Model: Found costs of 1 for: %ctlz = call i32 @llvm.ctlz.i32(i32 %a, i1 false)51; LZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %ctlz52;53 %ctlz = call i32 @llvm.ctlz.i32(i32 %a, i1 0)54 ret i32 %ctlz55}56 57define i32 @var_ctlz_i32u(i32 %a) {58; NOLZCNT-LABEL: 'var_ctlz_i32u'59; NOLZCNT-NEXT: Cost Model: Found costs of RThru:1 CodeSize:2 Lat:2 SizeLat:2 for: %ctlz = call i32 @llvm.ctlz.i32(i32 %a, i1 true)60; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %ctlz61;62; LZCNT-LABEL: 'var_ctlz_i32u'63; LZCNT-NEXT: Cost Model: Found costs of 1 for: %ctlz = call i32 @llvm.ctlz.i32(i32 %a, i1 true)64; LZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %ctlz65;66 %ctlz = call i32 @llvm.ctlz.i32(i32 %a, i1 1)67 ret i32 %ctlz68}69 70define i16 @var_ctlz_i16(i16 %a) {71; NOLZCNT-LABEL: 'var_ctlz_i16'72; NOLZCNT-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %ctlz = call i16 @llvm.ctlz.i16(i16 %a, i1 false)73; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %ctlz74;75; LZCNT-LABEL: 'var_ctlz_i16'76; LZCNT-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %ctlz = call i16 @llvm.ctlz.i16(i16 %a, i1 false)77; LZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %ctlz78;79 %ctlz = call i16 @llvm.ctlz.i16(i16 %a, i1 0)80 ret i16 %ctlz81}82 83define i16 @var_ctlz_i16u(i16 %a) {84; NOLZCNT-LABEL: 'var_ctlz_i16u'85; NOLZCNT-NEXT: Cost Model: Found costs of 2 for: %ctlz = call i16 @llvm.ctlz.i16(i16 %a, i1 true)86; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %ctlz87;88; LZCNT-LABEL: 'var_ctlz_i16u'89; LZCNT-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %ctlz = call i16 @llvm.ctlz.i16(i16 %a, i1 true)90; LZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %ctlz91;92 %ctlz = call i16 @llvm.ctlz.i16(i16 %a, i1 1)93 ret i16 %ctlz94}95 96define i8 @var_ctlz_i8(i8 %a) {97; NOLZCNT-LABEL: 'var_ctlz_i8'98; NOLZCNT-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:2 SizeLat:3 for: %ctlz = call i8 @llvm.ctlz.i8(i8 %a, i1 false)99; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %ctlz100;101; LZCNT-LABEL: 'var_ctlz_i8'102; LZCNT-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %ctlz = call i8 @llvm.ctlz.i8(i8 %a, i1 false)103; LZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %ctlz104;105 %ctlz = call i8 @llvm.ctlz.i8(i8 %a, i1 0)106 ret i8 %ctlz107}108 109define i8 @var_ctlz_i8u(i8 %a) {110; NOLZCNT-LABEL: 'var_ctlz_i8u'111; NOLZCNT-NEXT: Cost Model: Found costs of RThru:2 CodeSize:3 Lat:2 SizeLat:3 for: %ctlz = call i8 @llvm.ctlz.i8(i8 %a, i1 true)112; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %ctlz113;114; LZCNT-LABEL: 'var_ctlz_i8u'115; LZCNT-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %ctlz = call i8 @llvm.ctlz.i8(i8 %a, i1 true)116; LZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %ctlz117;118 %ctlz = call i8 @llvm.ctlz.i8(i8 %a, i1 1)119 ret i8 %ctlz120}121 122; Verify the cost of vector leading zero count instructions.123 124declare <2 x i64> @llvm.ctlz.v2i64(<2 x i64>, i1)125declare <4 x i32> @llvm.ctlz.v4i32(<4 x i32>, i1)126declare <8 x i16> @llvm.ctlz.v8i16(<8 x i16>, i1)127declare <16 x i8> @llvm.ctlz.v16i8(<16 x i8>, i1)128 129declare <4 x i64> @llvm.ctlz.v4i64(<4 x i64>, i1)130declare <8 x i32> @llvm.ctlz.v8i32(<8 x i32>, i1)131declare <16 x i16> @llvm.ctlz.v16i16(<16 x i16>, i1)132declare <32 x i8> @llvm.ctlz.v32i8(<32 x i8>, i1)133 134declare <8 x i64> @llvm.ctlz.v8i64(<8 x i64>, i1)135declare <16 x i32> @llvm.ctlz.v16i32(<16 x i32>, i1)136declare <32 x i16> @llvm.ctlz.v32i16(<32 x i16>, i1)137declare <64 x i8> @llvm.ctlz.v64i8(<64 x i8>, i1)138 139define <2 x i64> @var_ctlz_v2i64(<2 x i64> %a) {140; NOLZCNT-LABEL: 'var_ctlz_v2i64'141; NOLZCNT-NEXT: Cost Model: Found costs of RThru:10 CodeSize:36 Lat:45 SizeLat:38 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false)142; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz143;144; SSE2-LABEL: 'var_ctlz_v2i64'145; SSE2-NEXT: Cost Model: Found costs of RThru:10 CodeSize:36 Lat:45 SizeLat:38 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false)146; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz147;148; SSE42-LABEL: 'var_ctlz_v2i64'149; SSE42-NEXT: Cost Model: Found costs of RThru:18 CodeSize:28 Lat:28 SizeLat:35 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false)150; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz151;152; AVX1-LABEL: 'var_ctlz_v2i64'153; AVX1-NEXT: Cost Model: Found costs of RThru:14 CodeSize:24 Lat:24 SizeLat:28 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false)154; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz155;156; AVX2-LABEL: 'var_ctlz_v2i64'157; AVX2-NEXT: Cost Model: Found costs of RThru:7 CodeSize:24 Lat:18 SizeLat:25 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false)158; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz159;160; AVX512-LABEL: 'var_ctlz_v2i64'161; AVX512-NEXT: Cost Model: Found costs of RThru:7 CodeSize:24 Lat:18 SizeLat:25 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false)162; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz163;164; AVX512CD-LABEL: 'var_ctlz_v2i64'165; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false)166; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz167;168; AVX-LABEL: 'var_ctlz_v2i64'169; AVX-NEXT: Cost Model: Found an estimated cost of 23 for instruction: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false)170; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i64> %ctlz171 %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 0)172 ret <2 x i64> %ctlz173}174 175define <2 x i64> @var_ctlz_v2i64u(<2 x i64> %a) {176; NOLZCNT-LABEL: 'var_ctlz_v2i64u'177; NOLZCNT-NEXT: Cost Model: Found costs of RThru:10 CodeSize:36 Lat:45 SizeLat:38 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 true)178; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz179;180; SSE2-LABEL: 'var_ctlz_v2i64u'181; SSE2-NEXT: Cost Model: Found costs of RThru:10 CodeSize:36 Lat:45 SizeLat:38 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 true)182; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz183;184; SSE42-LABEL: 'var_ctlz_v2i64u'185; SSE42-NEXT: Cost Model: Found costs of RThru:18 CodeSize:28 Lat:28 SizeLat:35 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 true)186; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz187;188; AVX1-LABEL: 'var_ctlz_v2i64u'189; AVX1-NEXT: Cost Model: Found costs of RThru:14 CodeSize:24 Lat:24 SizeLat:28 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 true)190; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz191;192; AVX2-LABEL: 'var_ctlz_v2i64u'193; AVX2-NEXT: Cost Model: Found costs of RThru:7 CodeSize:24 Lat:18 SizeLat:25 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 true)194; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz195;196; AVX512-LABEL: 'var_ctlz_v2i64u'197; AVX512-NEXT: Cost Model: Found costs of RThru:7 CodeSize:24 Lat:18 SizeLat:25 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 true)198; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz199;200; AVX512CD-LABEL: 'var_ctlz_v2i64u'201; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 true)202; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <2 x i64> %ctlz203;204; AVX-LABEL: 'var_ctlz_v2i64u'205; AVX-NEXT: Cost Model: Found an estimated cost of 23 for instruction: %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 true)206; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i64> %ctlz207 %ctlz = call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 1)208 ret <2 x i64> %ctlz209}210 211define <4 x i64> @var_ctlz_v4i64(<4 x i64> %a) {212; NOLZCNT-LABEL: 'var_ctlz_v4i64'213; NOLZCNT-NEXT: Cost Model: Found costs of RThru:20 CodeSize:72 Lat:90 SizeLat:76 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 false)214; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz215;216; SSE2-LABEL: 'var_ctlz_v4i64'217; SSE2-NEXT: Cost Model: Found costs of RThru:20 CodeSize:72 Lat:90 SizeLat:76 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 false)218; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz219;220; SSE42-LABEL: 'var_ctlz_v4i64'221; SSE42-NEXT: Cost Model: Found costs of RThru:36 CodeSize:56 Lat:56 SizeLat:70 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 false)222; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz223;224; AVX1-LABEL: 'var_ctlz_v4i64'225; AVX1-NEXT: Cost Model: Found costs of RThru:29 CodeSize:49 Lat:33 SizeLat:58 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 false)226; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz227;228; AVX2-LABEL: 'var_ctlz_v4i64'229; AVX2-NEXT: Cost Model: Found costs of RThru:14 CodeSize:24 Lat:18 SizeLat:44 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 false)230; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz231;232; AVX512-LABEL: 'var_ctlz_v4i64'233; AVX512-NEXT: Cost Model: Found costs of RThru:14 CodeSize:24 Lat:18 SizeLat:44 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 false)234; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz235;236; AVX512CD-LABEL: 'var_ctlz_v4i64'237; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 false)238; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz239;240 %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 0)241 ret <4 x i64> %ctlz242}243 244define <4 x i64> @var_ctlz_v4i64u(<4 x i64> %a) {245; NOLZCNT-LABEL: 'var_ctlz_v4i64u'246; NOLZCNT-NEXT: Cost Model: Found costs of RThru:20 CodeSize:72 Lat:90 SizeLat:76 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 true)247; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz248;249; SSE2-LABEL: 'var_ctlz_v4i64u'250; SSE2-NEXT: Cost Model: Found costs of RThru:20 CodeSize:72 Lat:90 SizeLat:76 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 true)251; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz252;253; SSE42-LABEL: 'var_ctlz_v4i64u'254; SSE42-NEXT: Cost Model: Found costs of RThru:36 CodeSize:56 Lat:56 SizeLat:70 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 true)255; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz256;257; AVX1-LABEL: 'var_ctlz_v4i64u'258; AVX1-NEXT: Cost Model: Found costs of RThru:29 CodeSize:49 Lat:33 SizeLat:58 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 true)259; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz260;261; AVX2-LABEL: 'var_ctlz_v4i64u'262; AVX2-NEXT: Cost Model: Found costs of RThru:14 CodeSize:24 Lat:18 SizeLat:44 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 true)263; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz264;265; AVX512-LABEL: 'var_ctlz_v4i64u'266; AVX512-NEXT: Cost Model: Found costs of RThru:14 CodeSize:24 Lat:18 SizeLat:44 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 true)267; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz268;269; AVX512CD-LABEL: 'var_ctlz_v4i64u'270; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 true)271; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i64> %ctlz272;273 %ctlz = call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %a, i1 1)274 ret <4 x i64> %ctlz275}276 277define <8 x i64> @var_ctlz_v8i64(<8 x i64> %a) {278; NOLZCNT-LABEL: 'var_ctlz_v8i64'279; NOLZCNT-NEXT: Cost Model: Found costs of RThru:40 CodeSize:144 Lat:180 SizeLat:152 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 false)280; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz281;282; SSE2-LABEL: 'var_ctlz_v8i64'283; SSE2-NEXT: Cost Model: Found costs of RThru:40 CodeSize:144 Lat:180 SizeLat:152 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 false)284; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz285;286; SSE42-LABEL: 'var_ctlz_v8i64'287; SSE42-NEXT: Cost Model: Found costs of RThru:72 CodeSize:112 Lat:112 SizeLat:140 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 false)288; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz289;290; AVX1-LABEL: 'var_ctlz_v8i64'291; AVX1-NEXT: Cost Model: Found costs of RThru:58 CodeSize:98 Lat:66 SizeLat:116 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 false)292; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz293;294; AVX2-LABEL: 'var_ctlz_v8i64'295; AVX2-NEXT: Cost Model: Found costs of RThru:28 CodeSize:48 Lat:36 SizeLat:88 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 false)296; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz297;298; AVX512F-LABEL: 'var_ctlz_v8i64'299; AVX512F-NEXT: Cost Model: Found costs of RThru:10 CodeSize:32 Lat:28 SizeLat:32 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 false)300; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz301;302; AVX512BW-LABEL: 'var_ctlz_v8i64'303; AVX512BW-NEXT: Cost Model: Found costs of RThru:8 CodeSize:23 Lat:22 SizeLat:23 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 false)304; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz305;306; AVX512CD-LABEL: 'var_ctlz_v8i64'307; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 false)308; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz309;310 %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 0)311 ret <8 x i64> %ctlz312}313 314define <8 x i64> @var_ctlz_v8i64u(<8 x i64> %a) {315; NOLZCNT-LABEL: 'var_ctlz_v8i64u'316; NOLZCNT-NEXT: Cost Model: Found costs of RThru:40 CodeSize:144 Lat:180 SizeLat:152 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 true)317; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz318;319; SSE2-LABEL: 'var_ctlz_v8i64u'320; SSE2-NEXT: Cost Model: Found costs of RThru:40 CodeSize:144 Lat:180 SizeLat:152 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 true)321; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz322;323; SSE42-LABEL: 'var_ctlz_v8i64u'324; SSE42-NEXT: Cost Model: Found costs of RThru:72 CodeSize:112 Lat:112 SizeLat:140 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 true)325; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz326;327; AVX1-LABEL: 'var_ctlz_v8i64u'328; AVX1-NEXT: Cost Model: Found costs of RThru:58 CodeSize:98 Lat:66 SizeLat:116 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 true)329; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz330;331; AVX2-LABEL: 'var_ctlz_v8i64u'332; AVX2-NEXT: Cost Model: Found costs of RThru:28 CodeSize:48 Lat:36 SizeLat:88 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 true)333; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz334;335; AVX512F-LABEL: 'var_ctlz_v8i64u'336; AVX512F-NEXT: Cost Model: Found costs of RThru:10 CodeSize:32 Lat:28 SizeLat:32 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 true)337; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz338;339; AVX512BW-LABEL: 'var_ctlz_v8i64u'340; AVX512BW-NEXT: Cost Model: Found costs of RThru:8 CodeSize:23 Lat:22 SizeLat:23 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 true)341; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz342;343; AVX512CD-LABEL: 'var_ctlz_v8i64u'344; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 true)345; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i64> %ctlz346;347 %ctlz = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %a, i1 1)348 ret <8 x i64> %ctlz349}350 351define <4 x i32> @var_ctlz_v4i32(<4 x i32> %a) {352; NOLZCNT-LABEL: 'var_ctlz_v4i32'353; NOLZCNT-NEXT: Cost Model: Found costs of RThru:10 CodeSize:38 Lat:45 SizeLat:40 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false)354; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz355;356; SSE2-LABEL: 'var_ctlz_v4i32'357; SSE2-NEXT: Cost Model: Found costs of RThru:10 CodeSize:38 Lat:45 SizeLat:40 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false)358; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz359;360; SSE42-LABEL: 'var_ctlz_v4i32'361; SSE42-NEXT: Cost Model: Found costs of RThru:15 CodeSize:22 Lat:20 SizeLat:28 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false)362; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz363;364; AVX1-LABEL: 'var_ctlz_v4i32'365; AVX1-NEXT: Cost Model: Found costs of RThru:12 CodeSize:19 Lat:20 SizeLat:23 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false)366; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz367;368; AVX2-LABEL: 'var_ctlz_v4i32'369; AVX2-NEXT: Cost Model: Found costs of RThru:5 CodeSize:19 Lat:16 SizeLat:20 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false)370; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz371;372; AVX512-LABEL: 'var_ctlz_v4i32'373; AVX512-NEXT: Cost Model: Found costs of RThru:5 CodeSize:19 Lat:16 SizeLat:20 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false)374; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz375;376; AVX512CD-LABEL: 'var_ctlz_v4i32'377; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false)378; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz379;380; AVX-LABEL: 'var_ctlz_v4i32'381; AVX-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false)382; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x i32> %ctlz383 %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 0)384 ret <4 x i32> %ctlz385}386 387define <4 x i32> @var_ctlz_v4i32u(<4 x i32> %a) {388; NOLZCNT-LABEL: 'var_ctlz_v4i32u'389; NOLZCNT-NEXT: Cost Model: Found costs of RThru:10 CodeSize:38 Lat:45 SizeLat:40 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 true)390; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz391;392; SSE2-LABEL: 'var_ctlz_v4i32u'393; SSE2-NEXT: Cost Model: Found costs of RThru:10 CodeSize:38 Lat:45 SizeLat:40 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 true)394; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz395;396; SSE42-LABEL: 'var_ctlz_v4i32u'397; SSE42-NEXT: Cost Model: Found costs of RThru:15 CodeSize:22 Lat:20 SizeLat:28 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 true)398; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz399;400; AVX1-LABEL: 'var_ctlz_v4i32u'401; AVX1-NEXT: Cost Model: Found costs of RThru:12 CodeSize:19 Lat:20 SizeLat:23 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 true)402; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz403;404; AVX2-LABEL: 'var_ctlz_v4i32u'405; AVX2-NEXT: Cost Model: Found costs of RThru:5 CodeSize:19 Lat:16 SizeLat:20 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 true)406; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz407;408; AVX512-LABEL: 'var_ctlz_v4i32u'409; AVX512-NEXT: Cost Model: Found costs of RThru:5 CodeSize:19 Lat:16 SizeLat:20 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 true)410; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz411;412; AVX512CD-LABEL: 'var_ctlz_v4i32u'413; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 true)414; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %ctlz415;416; AVX-LABEL: 'var_ctlz_v4i32u'417; AVX-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 true)418; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x i32> %ctlz419 %ctlz = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 1)420 ret <4 x i32> %ctlz421}422 423define <8 x i32> @var_ctlz_v8i32(<8 x i32> %a) {424; NOLZCNT-LABEL: 'var_ctlz_v8i32'425; NOLZCNT-NEXT: Cost Model: Found costs of RThru:20 CodeSize:76 Lat:90 SizeLat:80 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 false)426; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz427;428; SSE2-LABEL: 'var_ctlz_v8i32'429; SSE2-NEXT: Cost Model: Found costs of RThru:20 CodeSize:76 Lat:90 SizeLat:80 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 false)430; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz431;432; SSE42-LABEL: 'var_ctlz_v8i32'433; SSE42-NEXT: Cost Model: Found costs of RThru:30 CodeSize:44 Lat:40 SizeLat:56 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 false)434; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz435;436; AVX1-LABEL: 'var_ctlz_v8i32'437; AVX1-NEXT: Cost Model: Found costs of RThru:24 CodeSize:39 Lat:28 SizeLat:48 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 false)438; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz439;440; AVX2-LABEL: 'var_ctlz_v8i32'441; AVX2-NEXT: Cost Model: Found costs of RThru:10 CodeSize:19 Lat:16 SizeLat:34 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 false)442; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz443;444; AVX512-LABEL: 'var_ctlz_v8i32'445; AVX512-NEXT: Cost Model: Found costs of RThru:10 CodeSize:19 Lat:16 SizeLat:34 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 false)446; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz447;448; AVX512CD-LABEL: 'var_ctlz_v8i32'449; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 false)450; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz451;452 %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 0)453 ret <8 x i32> %ctlz454}455 456define <8 x i32> @var_ctlz_v8i32u(<8 x i32> %a) {457; NOLZCNT-LABEL: 'var_ctlz_v8i32u'458; NOLZCNT-NEXT: Cost Model: Found costs of RThru:20 CodeSize:76 Lat:90 SizeLat:80 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 true)459; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz460;461; SSE2-LABEL: 'var_ctlz_v8i32u'462; SSE2-NEXT: Cost Model: Found costs of RThru:20 CodeSize:76 Lat:90 SizeLat:80 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 true)463; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz464;465; SSE42-LABEL: 'var_ctlz_v8i32u'466; SSE42-NEXT: Cost Model: Found costs of RThru:30 CodeSize:44 Lat:40 SizeLat:56 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 true)467; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz468;469; AVX1-LABEL: 'var_ctlz_v8i32u'470; AVX1-NEXT: Cost Model: Found costs of RThru:24 CodeSize:39 Lat:28 SizeLat:48 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 true)471; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz472;473; AVX2-LABEL: 'var_ctlz_v8i32u'474; AVX2-NEXT: Cost Model: Found costs of RThru:10 CodeSize:19 Lat:16 SizeLat:34 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 true)475; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz476;477; AVX512-LABEL: 'var_ctlz_v8i32u'478; AVX512-NEXT: Cost Model: Found costs of RThru:10 CodeSize:19 Lat:16 SizeLat:34 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 true)479; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz480;481; AVX512CD-LABEL: 'var_ctlz_v8i32u'482; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 true)483; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i32> %ctlz484;485 %ctlz = call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %a, i1 1)486 ret <8 x i32> %ctlz487}488 489define <16 x i32> @var_ctlz_v16i32(<16 x i32> %a) {490; NOLZCNT-LABEL: 'var_ctlz_v16i32'491; NOLZCNT-NEXT: Cost Model: Found costs of RThru:40 CodeSize:152 Lat:180 SizeLat:160 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 false)492; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz493;494; SSE2-LABEL: 'var_ctlz_v16i32'495; SSE2-NEXT: Cost Model: Found costs of RThru:40 CodeSize:152 Lat:180 SizeLat:160 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 false)496; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz497;498; SSE42-LABEL: 'var_ctlz_v16i32'499; SSE42-NEXT: Cost Model: Found costs of RThru:60 CodeSize:88 Lat:80 SizeLat:112 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 false)500; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz501;502; AVX1-LABEL: 'var_ctlz_v16i32'503; AVX1-NEXT: Cost Model: Found costs of RThru:48 CodeSize:78 Lat:56 SizeLat:96 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 false)504; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz505;506; AVX2-LABEL: 'var_ctlz_v16i32'507; AVX2-NEXT: Cost Model: Found costs of RThru:20 CodeSize:38 Lat:32 SizeLat:68 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 false)508; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz509;510; AVX512F-LABEL: 'var_ctlz_v16i32'511; AVX512F-NEXT: Cost Model: Found costs of RThru:12 CodeSize:38 Lat:30 SizeLat:38 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 false)512; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz513;514; AVX512BW-LABEL: 'var_ctlz_v16i32'515; AVX512BW-NEXT: Cost Model: Found costs of RThru:8 CodeSize:25 Lat:23 SizeLat:25 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 false)516; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz517;518; AVX512CD-LABEL: 'var_ctlz_v16i32'519; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 false)520; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz521;522 %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 0)523 ret <16 x i32> %ctlz524}525 526define <16 x i32> @var_ctlz_v16i32u(<16 x i32> %a) {527; NOLZCNT-LABEL: 'var_ctlz_v16i32u'528; NOLZCNT-NEXT: Cost Model: Found costs of RThru:40 CodeSize:152 Lat:180 SizeLat:160 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 true)529; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz530;531; SSE2-LABEL: 'var_ctlz_v16i32u'532; SSE2-NEXT: Cost Model: Found costs of RThru:40 CodeSize:152 Lat:180 SizeLat:160 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 true)533; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz534;535; SSE42-LABEL: 'var_ctlz_v16i32u'536; SSE42-NEXT: Cost Model: Found costs of RThru:60 CodeSize:88 Lat:80 SizeLat:112 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 true)537; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz538;539; AVX1-LABEL: 'var_ctlz_v16i32u'540; AVX1-NEXT: Cost Model: Found costs of RThru:48 CodeSize:78 Lat:56 SizeLat:96 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 true)541; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz542;543; AVX2-LABEL: 'var_ctlz_v16i32u'544; AVX2-NEXT: Cost Model: Found costs of RThru:20 CodeSize:38 Lat:32 SizeLat:68 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 true)545; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz546;547; AVX512F-LABEL: 'var_ctlz_v16i32u'548; AVX512F-NEXT: Cost Model: Found costs of RThru:12 CodeSize:38 Lat:30 SizeLat:38 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 true)549; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz550;551; AVX512BW-LABEL: 'var_ctlz_v16i32u'552; AVX512BW-NEXT: Cost Model: Found costs of RThru:8 CodeSize:25 Lat:23 SizeLat:25 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 true)553; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz554;555; AVX512CD-LABEL: 'var_ctlz_v16i32u'556; AVX512CD-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:5 SizeLat:1 for: %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 true)557; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i32> %ctlz558;559 %ctlz = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %a, i1 1)560 ret <16 x i32> %ctlz561}562 563define <8 x i16> @var_ctlz_v8i16(<8 x i16> %a) {564; NOLZCNT-LABEL: 'var_ctlz_v8i16'565; NOLZCNT-NEXT: Cost Model: Found costs of RThru:9 CodeSize:32 Lat:38 SizeLat:34 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false)566; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz567;568; SSE2-LABEL: 'var_ctlz_v8i16'569; SSE2-NEXT: Cost Model: Found costs of RThru:9 CodeSize:32 Lat:38 SizeLat:34 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false)570; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz571;572; SSE42-LABEL: 'var_ctlz_v8i16'573; SSE42-NEXT: Cost Model: Found costs of RThru:13 CodeSize:16 Lat:17 SizeLat:22 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false)574; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz575;576; AVX1-LABEL: 'var_ctlz_v8i16'577; AVX1-NEXT: Cost Model: Found costs of RThru:9 CodeSize:14 Lat:16 SizeLat:18 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false)578; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz579;580; AVX2-LABEL: 'var_ctlz_v8i16'581; AVX2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:14 Lat:13 SizeLat:15 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false)582; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz583;584; AVX512-LABEL: 'var_ctlz_v8i16'585; AVX512-NEXT: Cost Model: Found costs of RThru:4 CodeSize:14 Lat:13 SizeLat:15 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false)586; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz587;588; AVX512CD-LABEL: 'var_ctlz_v8i16'589; AVX512CD-NEXT: Cost Model: Found costs of RThru:3 CodeSize:4 Lat:15 SizeLat:6 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false)590; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz591;592; AVX-LABEL: 'var_ctlz_v8i16'593; AVX-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false)594; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i16> %ctlz595 %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 0)596 ret <8 x i16> %ctlz597}598 599define <8 x i16> @var_ctlz_v8i16u(<8 x i16> %a) {600; NOLZCNT-LABEL: 'var_ctlz_v8i16u'601; NOLZCNT-NEXT: Cost Model: Found costs of RThru:9 CodeSize:32 Lat:38 SizeLat:34 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 true)602; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz603;604; SSE2-LABEL: 'var_ctlz_v8i16u'605; SSE2-NEXT: Cost Model: Found costs of RThru:9 CodeSize:32 Lat:38 SizeLat:34 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 true)606; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz607;608; SSE42-LABEL: 'var_ctlz_v8i16u'609; SSE42-NEXT: Cost Model: Found costs of RThru:13 CodeSize:16 Lat:17 SizeLat:22 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 true)610; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz611;612; AVX1-LABEL: 'var_ctlz_v8i16u'613; AVX1-NEXT: Cost Model: Found costs of RThru:9 CodeSize:14 Lat:16 SizeLat:18 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 true)614; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz615;616; AVX2-LABEL: 'var_ctlz_v8i16u'617; AVX2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:14 Lat:13 SizeLat:15 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 true)618; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz619;620; AVX512-LABEL: 'var_ctlz_v8i16u'621; AVX512-NEXT: Cost Model: Found costs of RThru:4 CodeSize:14 Lat:13 SizeLat:15 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 true)622; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz623;624; AVX512CD-LABEL: 'var_ctlz_v8i16u'625; AVX512CD-NEXT: Cost Model: Found costs of RThru:3 CodeSize:4 Lat:15 SizeLat:6 for: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 true)626; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %ctlz627;628; AVX-LABEL: 'var_ctlz_v8i16u'629; AVX-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 true)630; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <8 x i16> %ctlz631 %ctlz = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 1)632 ret <8 x i16> %ctlz633}634 635define <16 x i16> @var_ctlz_v16i16(<16 x i16> %a) {636; NOLZCNT-LABEL: 'var_ctlz_v16i16'637; NOLZCNT-NEXT: Cost Model: Found costs of RThru:18 CodeSize:64 Lat:76 SizeLat:68 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 false)638; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz639;640; SSE2-LABEL: 'var_ctlz_v16i16'641; SSE2-NEXT: Cost Model: Found costs of RThru:18 CodeSize:64 Lat:76 SizeLat:68 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 false)642; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz643;644; SSE42-LABEL: 'var_ctlz_v16i16'645; SSE42-NEXT: Cost Model: Found costs of RThru:26 CodeSize:32 Lat:34 SizeLat:44 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 false)646; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz647;648; AVX1-LABEL: 'var_ctlz_v16i16'649; AVX1-NEXT: Cost Model: Found costs of RThru:19 CodeSize:29 Lat:22 SizeLat:38 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 false)650; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz651;652; AVX2-LABEL: 'var_ctlz_v16i16'653; AVX2-NEXT: Cost Model: Found costs of RThru:6 CodeSize:14 Lat:14 SizeLat:24 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 false)654; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz655;656; AVX512-LABEL: 'var_ctlz_v16i16'657; AVX512-NEXT: Cost Model: Found costs of RThru:6 CodeSize:14 Lat:14 SizeLat:24 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 false)658; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz659;660; AVX512CD-LABEL: 'var_ctlz_v16i16'661; AVX512CD-NEXT: Cost Model: Found costs of RThru:8 CodeSize:11 Lat:19 SizeLat:13 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 false)662; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz663;664 %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 0)665 ret <16 x i16> %ctlz666}667 668define <16 x i16> @var_ctlz_v16i16u(<16 x i16> %a) {669; NOLZCNT-LABEL: 'var_ctlz_v16i16u'670; NOLZCNT-NEXT: Cost Model: Found costs of RThru:18 CodeSize:64 Lat:76 SizeLat:68 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 true)671; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz672;673; SSE2-LABEL: 'var_ctlz_v16i16u'674; SSE2-NEXT: Cost Model: Found costs of RThru:18 CodeSize:64 Lat:76 SizeLat:68 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 true)675; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz676;677; SSE42-LABEL: 'var_ctlz_v16i16u'678; SSE42-NEXT: Cost Model: Found costs of RThru:26 CodeSize:32 Lat:34 SizeLat:44 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 true)679; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz680;681; AVX1-LABEL: 'var_ctlz_v16i16u'682; AVX1-NEXT: Cost Model: Found costs of RThru:19 CodeSize:29 Lat:22 SizeLat:38 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 true)683; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz684;685; AVX2-LABEL: 'var_ctlz_v16i16u'686; AVX2-NEXT: Cost Model: Found costs of RThru:6 CodeSize:14 Lat:14 SizeLat:24 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 true)687; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz688;689; AVX512-LABEL: 'var_ctlz_v16i16u'690; AVX512-NEXT: Cost Model: Found costs of RThru:6 CodeSize:14 Lat:14 SizeLat:24 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 true)691; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz692;693; AVX512CD-LABEL: 'var_ctlz_v16i16u'694; AVX512CD-NEXT: Cost Model: Found costs of RThru:8 CodeSize:11 Lat:19 SizeLat:13 for: %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 true)695; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i16> %ctlz696;697 %ctlz = call <16 x i16> @llvm.ctlz.v16i16(<16 x i16> %a, i1 1)698 ret <16 x i16> %ctlz699}700 701define <32 x i16> @var_ctlz_v32i16(<32 x i16> %a) {702; NOLZCNT-LABEL: 'var_ctlz_v32i16'703; NOLZCNT-NEXT: Cost Model: Found costs of RThru:36 CodeSize:128 Lat:152 SizeLat:136 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 false)704; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz705;706; SSE2-LABEL: 'var_ctlz_v32i16'707; SSE2-NEXT: Cost Model: Found costs of RThru:36 CodeSize:128 Lat:152 SizeLat:136 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 false)708; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz709;710; SSE42-LABEL: 'var_ctlz_v32i16'711; SSE42-NEXT: Cost Model: Found costs of RThru:52 CodeSize:64 Lat:68 SizeLat:88 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 false)712; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz713;714; AVX1-LABEL: 'var_ctlz_v32i16'715; AVX1-NEXT: Cost Model: Found costs of RThru:38 CodeSize:58 Lat:44 SizeLat:76 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 false)716; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz717;718; AVX2-LABEL: 'var_ctlz_v32i16'719; AVX2-NEXT: Cost Model: Found costs of RThru:12 CodeSize:28 Lat:28 SizeLat:48 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 false)720; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz721;722; AVX512F-LABEL: 'var_ctlz_v32i16'723; AVX512F-NEXT: Cost Model: Found costs of RThru:8 CodeSize:29 Lat:15 SizeLat:29 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 false)724; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz725;726; AVX512BW-LABEL: 'var_ctlz_v32i16'727; AVX512BW-NEXT: Cost Model: Found costs of RThru:4 CodeSize:15 Lat:15 SizeLat:16 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 false)728; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz729;730; AVX512CD-LABEL: 'var_ctlz_v32i16'731; AVX512CD-NEXT: Cost Model: Found costs of RThru:18 CodeSize:23 Lat:27 SizeLat:27 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 false)732; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz733;734 %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 0)735 ret <32 x i16> %ctlz736}737 738define <32 x i16> @var_ctlz_v32i16u(<32 x i16> %a) {739; NOLZCNT-LABEL: 'var_ctlz_v32i16u'740; NOLZCNT-NEXT: Cost Model: Found costs of RThru:36 CodeSize:128 Lat:152 SizeLat:136 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 true)741; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz742;743; SSE2-LABEL: 'var_ctlz_v32i16u'744; SSE2-NEXT: Cost Model: Found costs of RThru:36 CodeSize:128 Lat:152 SizeLat:136 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 true)745; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz746;747; SSE42-LABEL: 'var_ctlz_v32i16u'748; SSE42-NEXT: Cost Model: Found costs of RThru:52 CodeSize:64 Lat:68 SizeLat:88 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 true)749; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz750;751; AVX1-LABEL: 'var_ctlz_v32i16u'752; AVX1-NEXT: Cost Model: Found costs of RThru:38 CodeSize:58 Lat:44 SizeLat:76 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 true)753; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz754;755; AVX2-LABEL: 'var_ctlz_v32i16u'756; AVX2-NEXT: Cost Model: Found costs of RThru:12 CodeSize:28 Lat:28 SizeLat:48 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 true)757; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz758;759; AVX512F-LABEL: 'var_ctlz_v32i16u'760; AVX512F-NEXT: Cost Model: Found costs of RThru:8 CodeSize:29 Lat:15 SizeLat:29 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 true)761; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz762;763; AVX512BW-LABEL: 'var_ctlz_v32i16u'764; AVX512BW-NEXT: Cost Model: Found costs of RThru:4 CodeSize:15 Lat:15 SizeLat:16 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 true)765; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz766;767; AVX512CD-LABEL: 'var_ctlz_v32i16u'768; AVX512CD-NEXT: Cost Model: Found costs of RThru:18 CodeSize:23 Lat:27 SizeLat:27 for: %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 true)769; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i16> %ctlz770;771 %ctlz = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %a, i1 1)772 ret <32 x i16> %ctlz773}774 775define <16 x i8> @var_ctlz_v16i8(<16 x i8> %a) {776; NOLZCNT-LABEL: 'var_ctlz_v16i8'777; NOLZCNT-NEXT: Cost Model: Found costs of RThru:8 CodeSize:29 Lat:39 SizeLat:32 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false)778; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz779;780; SSE2-LABEL: 'var_ctlz_v16i8'781; SSE2-NEXT: Cost Model: Found costs of RThru:8 CodeSize:29 Lat:39 SizeLat:32 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false)782; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz783;784; SSE42-LABEL: 'var_ctlz_v16i8'785; SSE42-NEXT: Cost Model: Found costs of RThru:11 CodeSize:10 Lat:15 SizeLat:16 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false)786; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz787;788; AVX1-LABEL: 'var_ctlz_v16i8'789; AVX1-NEXT: Cost Model: Found costs of RThru:7 CodeSize:9 Lat:12 SizeLat:13 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false)790; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz791;792; AVX2-LABEL: 'var_ctlz_v16i8'793; AVX2-NEXT: Cost Model: Found costs of RThru:3 CodeSize:9 Lat:12 SizeLat:10 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false)794; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz795;796; AVX512-LABEL: 'var_ctlz_v16i8'797; AVX512-NEXT: Cost Model: Found costs of RThru:3 CodeSize:9 Lat:12 SizeLat:10 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false)798; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz799;800; AVX512CD-LABEL: 'var_ctlz_v16i8'801; AVX512CD-NEXT: Cost Model: Found costs of RThru:2 CodeSize:9 Lat:10 SizeLat:10 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false)802; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz803;804; AVX-LABEL: 'var_ctlz_v16i8'805; AVX-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false)806; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i8> %ctlz807 %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 0)808 ret <16 x i8> %ctlz809}810 811define <16 x i8> @var_ctlz_v16i8u(<16 x i8> %a) {812; NOLZCNT-LABEL: 'var_ctlz_v16i8u'813; NOLZCNT-NEXT: Cost Model: Found costs of RThru:8 CodeSize:29 Lat:39 SizeLat:32 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 true)814; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz815;816; SSE2-LABEL: 'var_ctlz_v16i8u'817; SSE2-NEXT: Cost Model: Found costs of RThru:8 CodeSize:29 Lat:39 SizeLat:32 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 true)818; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz819;820; SSE42-LABEL: 'var_ctlz_v16i8u'821; SSE42-NEXT: Cost Model: Found costs of RThru:11 CodeSize:10 Lat:15 SizeLat:16 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 true)822; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz823;824; AVX1-LABEL: 'var_ctlz_v16i8u'825; AVX1-NEXT: Cost Model: Found costs of RThru:7 CodeSize:9 Lat:12 SizeLat:13 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 true)826; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz827;828; AVX2-LABEL: 'var_ctlz_v16i8u'829; AVX2-NEXT: Cost Model: Found costs of RThru:3 CodeSize:9 Lat:12 SizeLat:10 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 true)830; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz831;832; AVX512-LABEL: 'var_ctlz_v16i8u'833; AVX512-NEXT: Cost Model: Found costs of RThru:3 CodeSize:9 Lat:12 SizeLat:10 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 true)834; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz835;836; AVX512CD-LABEL: 'var_ctlz_v16i8u'837; AVX512CD-NEXT: Cost Model: Found costs of RThru:2 CodeSize:9 Lat:10 SizeLat:10 for: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 true)838; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %ctlz839;840; AVX-LABEL: 'var_ctlz_v16i8u'841; AVX-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 true)842; AVX-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x i8> %ctlz843 %ctlz = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 1)844 ret <16 x i8> %ctlz845}846 847define <32 x i8> @var_ctlz_v32i8(<32 x i8> %a) {848; NOLZCNT-LABEL: 'var_ctlz_v32i8'849; NOLZCNT-NEXT: Cost Model: Found costs of RThru:16 CodeSize:58 Lat:78 SizeLat:64 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 false)850; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz851;852; SSE2-LABEL: 'var_ctlz_v32i8'853; SSE2-NEXT: Cost Model: Found costs of RThru:16 CodeSize:58 Lat:78 SizeLat:64 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 false)854; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz855;856; SSE42-LABEL: 'var_ctlz_v32i8'857; SSE42-NEXT: Cost Model: Found costs of RThru:22 CodeSize:20 Lat:30 SizeLat:32 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 false)858; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz859;860; AVX1-LABEL: 'var_ctlz_v32i8'861; AVX1-NEXT: Cost Model: Found costs of RThru:14 CodeSize:19 Lat:15 SizeLat:28 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 false)862; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz863;864; AVX2-LABEL: 'var_ctlz_v32i8'865; AVX2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:9 Lat:12 SizeLat:14 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 false)866; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz867;868; AVX512-LABEL: 'var_ctlz_v32i8'869; AVX512-NEXT: Cost Model: Found costs of RThru:4 CodeSize:9 Lat:12 SizeLat:14 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 false)870; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz871;872; AVX512CD-LABEL: 'var_ctlz_v32i8'873; AVX512CD-NEXT: Cost Model: Found costs of RThru:2 CodeSize:9 Lat:11 SizeLat:10 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 false)874; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz875;876 %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 0)877 ret <32 x i8> %ctlz878}879 880define <32 x i8> @var_ctlz_v32i8u(<32 x i8> %a) {881; NOLZCNT-LABEL: 'var_ctlz_v32i8u'882; NOLZCNT-NEXT: Cost Model: Found costs of RThru:16 CodeSize:58 Lat:78 SizeLat:64 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 true)883; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz884;885; SSE2-LABEL: 'var_ctlz_v32i8u'886; SSE2-NEXT: Cost Model: Found costs of RThru:16 CodeSize:58 Lat:78 SizeLat:64 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 true)887; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz888;889; SSE42-LABEL: 'var_ctlz_v32i8u'890; SSE42-NEXT: Cost Model: Found costs of RThru:22 CodeSize:20 Lat:30 SizeLat:32 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 true)891; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz892;893; AVX1-LABEL: 'var_ctlz_v32i8u'894; AVX1-NEXT: Cost Model: Found costs of RThru:14 CodeSize:19 Lat:15 SizeLat:28 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 true)895; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz896;897; AVX2-LABEL: 'var_ctlz_v32i8u'898; AVX2-NEXT: Cost Model: Found costs of RThru:4 CodeSize:9 Lat:12 SizeLat:14 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 true)899; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz900;901; AVX512-LABEL: 'var_ctlz_v32i8u'902; AVX512-NEXT: Cost Model: Found costs of RThru:4 CodeSize:9 Lat:12 SizeLat:14 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 true)903; AVX512-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz904;905; AVX512CD-LABEL: 'var_ctlz_v32i8u'906; AVX512CD-NEXT: Cost Model: Found costs of RThru:2 CodeSize:9 Lat:11 SizeLat:10 for: %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 true)907; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <32 x i8> %ctlz908;909 %ctlz = call <32 x i8> @llvm.ctlz.v32i8(<32 x i8> %a, i1 1)910 ret <32 x i8> %ctlz911}912 913define <64 x i8> @var_ctlz_v64i8(<64 x i8> %a) {914; NOLZCNT-LABEL: 'var_ctlz_v64i8'915; NOLZCNT-NEXT: Cost Model: Found costs of RThru:32 CodeSize:116 Lat:156 SizeLat:128 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 false)916; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz917;918; SSE2-LABEL: 'var_ctlz_v64i8'919; SSE2-NEXT: Cost Model: Found costs of RThru:32 CodeSize:116 Lat:156 SizeLat:128 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 false)920; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz921;922; SSE42-LABEL: 'var_ctlz_v64i8'923; SSE42-NEXT: Cost Model: Found costs of RThru:44 CodeSize:40 Lat:60 SizeLat:64 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 false)924; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz925;926; AVX1-LABEL: 'var_ctlz_v64i8'927; AVX1-NEXT: Cost Model: Found costs of RThru:28 CodeSize:38 Lat:30 SizeLat:56 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 false)928; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz929;930; AVX2-LABEL: 'var_ctlz_v64i8'931; AVX2-NEXT: Cost Model: Found costs of RThru:8 CodeSize:18 Lat:24 SizeLat:28 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 false)932; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz933;934; AVX512F-LABEL: 'var_ctlz_v64i8'935; AVX512F-NEXT: Cost Model: Found costs of RThru:6 CodeSize:19 Lat:11 SizeLat:19 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 false)936; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz937;938; AVX512BW-LABEL: 'var_ctlz_v64i8'939; AVX512BW-NEXT: Cost Model: Found costs of RThru:3 CodeSize:10 Lat:12 SizeLat:9 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 false)940; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz941;942; AVX512CD-LABEL: 'var_ctlz_v64i8'943; AVX512CD-NEXT: Cost Model: Found costs of RThru:3 CodeSize:9 Lat:16 SizeLat:11 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 false)944; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz945;946 %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 0)947 ret <64 x i8> %ctlz948}949 950define <64 x i8> @var_ctlz_v64i8u(<64 x i8> %a) {951; NOLZCNT-LABEL: 'var_ctlz_v64i8u'952; NOLZCNT-NEXT: Cost Model: Found costs of RThru:32 CodeSize:116 Lat:156 SizeLat:128 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 true)953; NOLZCNT-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz954;955; SSE2-LABEL: 'var_ctlz_v64i8u'956; SSE2-NEXT: Cost Model: Found costs of RThru:32 CodeSize:116 Lat:156 SizeLat:128 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 true)957; SSE2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz958;959; SSE42-LABEL: 'var_ctlz_v64i8u'960; SSE42-NEXT: Cost Model: Found costs of RThru:44 CodeSize:40 Lat:60 SizeLat:64 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 true)961; SSE42-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz962;963; AVX1-LABEL: 'var_ctlz_v64i8u'964; AVX1-NEXT: Cost Model: Found costs of RThru:28 CodeSize:38 Lat:30 SizeLat:56 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 true)965; AVX1-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz966;967; AVX2-LABEL: 'var_ctlz_v64i8u'968; AVX2-NEXT: Cost Model: Found costs of RThru:8 CodeSize:18 Lat:24 SizeLat:28 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 true)969; AVX2-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz970;971; AVX512F-LABEL: 'var_ctlz_v64i8u'972; AVX512F-NEXT: Cost Model: Found costs of RThru:6 CodeSize:19 Lat:11 SizeLat:19 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 true)973; AVX512F-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz974;975; AVX512BW-LABEL: 'var_ctlz_v64i8u'976; AVX512BW-NEXT: Cost Model: Found costs of RThru:3 CodeSize:10 Lat:12 SizeLat:9 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 true)977; AVX512BW-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz978;979; AVX512CD-LABEL: 'var_ctlz_v64i8u'980; AVX512CD-NEXT: Cost Model: Found costs of RThru:3 CodeSize:9 Lat:16 SizeLat:11 for: %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 true)981; AVX512CD-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <64 x i8> %ctlz982;983 %ctlz = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %a, i1 1)984 ret <64 x i8> %ctlz985}986