219 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64 -mattr=+sve2 %s | FileCheck %s3 4target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"5target triple = "aarch64-linux-gnu"6 7define void @lrint() {8; CHECK-LABEL: 'lrint'9; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.lrint.nxv2i64.nxv2f32(<vscale x 2 x float> poison)10; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.lrint.nxv4i64.nxv4f32(<vscale x 4 x float> poison)11; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.lrint.nxv8i64.nxv8f32(<vscale x 8 x float> poison)12; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.lrint.nxv16i64.nxv16f32(<vscale x 16 x float> poison)13; CHECK-NEXT: Cost Model: Found costs of Invalid for: %5 = call <vscale x 2 x i64> @llvm.lrint.nxv2i64.nxv2f64(<vscale x 2 x double> poison)14; CHECK-NEXT: Cost Model: Found costs of Invalid for: %6 = call <vscale x 4 x i64> @llvm.lrint.nxv4i64.nxv4f64(<vscale x 4 x double> poison)15; CHECK-NEXT: Cost Model: Found costs of Invalid for: %7 = call <vscale x 8 x i64> @llvm.lrint.nxv8i64.nxv8f64(<vscale x 8 x double> poison)16; CHECK-NEXT: Cost Model: Found costs of Invalid for: %8 = call <vscale x 16 x i64> @llvm.lrint.nxv16i64.nxv16f64(<vscale x 16 x double> poison)17; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void18;19 call <vscale x 2 x i64> @llvm.lrint(<vscale x 2 x float> poison)20 call <vscale x 4 x i64> @llvm.lrint(<vscale x 4 x float> poison)21 call <vscale x 8 x i64> @llvm.lrint(<vscale x 8 x float> poison)22 call <vscale x 16 x i64> @llvm.lrint(<vscale x 16 x float> poison)23 call <vscale x 2 x i64> @llvm.lrint(<vscale x 2 x double> poison)24 call <vscale x 4 x i64> @llvm.lrint(<vscale x 4 x double> poison)25 call <vscale x 8 x i64> @llvm.lrint(<vscale x 8 x double> poison)26 call <vscale x 16 x i64> @llvm.lrint(<vscale x 16 x double> poison)27 ret void28}29 30define void @lrint_fp16() {31; CHECK-LABEL: 'lrint_fp16'32; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.lrint.nxv2i64.nxv2f16(<vscale x 2 x half> poison)33; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.lrint.nxv4i64.nxv4f16(<vscale x 4 x half> poison)34; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.lrint.nxv8i64.nxv8f16(<vscale x 8 x half> poison)35; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.lrint.nxv16i64.nxv16f16(<vscale x 16 x half> poison)36; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void37;38 call <vscale x 2 x i64> @llvm.lrint(<vscale x 2 x half> poison)39 call <vscale x 4 x i64> @llvm.lrint(<vscale x 4 x half> poison)40 call <vscale x 8 x i64> @llvm.lrint(<vscale x 8 x half> poison)41 call <vscale x 16 x i64> @llvm.lrint(<vscale x 16 x half> poison)42 ret void43}44 45define void @lrint_bf16() {46; CHECK-LABEL: 'lrint_bf16'47; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.lrint.nxv2i64.nxv2bf16(<vscale x 2 x bfloat> poison)48; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.lrint.nxv4i64.nxv4bf16(<vscale x 4 x bfloat> poison)49; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.lrint.nxv8i64.nxv8bf16(<vscale x 8 x bfloat> poison)50; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.lrint.nxv16i64.nxv16bf16(<vscale x 16 x bfloat> poison)51; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void52;53 call <vscale x 2 x i64> @llvm.lrint(<vscale x 2 x bfloat> poison)54 call <vscale x 4 x i64> @llvm.lrint(<vscale x 4 x bfloat> poison)55 call <vscale x 8 x i64> @llvm.lrint(<vscale x 8 x bfloat> poison)56 call <vscale x 16 x i64> @llvm.lrint(<vscale x 16 x bfloat> poison)57 ret void58}59 60define void @llrint() {61; CHECK-LABEL: 'llrint'62; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.llrint.nxv2i64.nxv2f32(<vscale x 2 x float> poison)63; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.llrint.nxv4i64.nxv4f32(<vscale x 4 x float> poison)64; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.llrint.nxv8i64.nxv8f32(<vscale x 8 x float> poison)65; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.llrint.nxv16i64.nxv16f32(<vscale x 16 x float> poison)66; CHECK-NEXT: Cost Model: Found costs of Invalid for: %5 = call <vscale x 2 x i64> @llvm.llrint.nxv2i64.nxv2f64(<vscale x 2 x double> poison)67; CHECK-NEXT: Cost Model: Found costs of Invalid for: %6 = call <vscale x 4 x i64> @llvm.llrint.nxv4i64.nxv4f64(<vscale x 4 x double> poison)68; CHECK-NEXT: Cost Model: Found costs of Invalid for: %7 = call <vscale x 8 x i64> @llvm.llrint.nxv8i64.nxv8f64(<vscale x 8 x double> poison)69; CHECK-NEXT: Cost Model: Found costs of Invalid for: %8 = call <vscale x 16 x i64> @llvm.llrint.nxv16i64.nxv16f64(<vscale x 16 x double> poison)70; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void71;72 call <vscale x 2 x i64> @llvm.llrint(<vscale x 2 x float> poison)73 call <vscale x 4 x i64> @llvm.llrint(<vscale x 4 x float> poison)74 call <vscale x 8 x i64> @llvm.llrint(<vscale x 8 x float> poison)75 call <vscale x 16 x i64> @llvm.llrint(<vscale x 16 x float> poison)76 call <vscale x 2 x i64> @llvm.llrint(<vscale x 2 x double> poison)77 call <vscale x 4 x i64> @llvm.llrint(<vscale x 4 x double> poison)78 call <vscale x 8 x i64> @llvm.llrint(<vscale x 8 x double> poison)79 call <vscale x 16 x i64> @llvm.llrint(<vscale x 16 x double> poison)80 ret void81}82 83define void @llrint_fp16() {84; CHECK-LABEL: 'llrint_fp16'85; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.llrint.nxv2i64.nxv2f16(<vscale x 2 x half> poison)86; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.llrint.nxv4i64.nxv4f16(<vscale x 4 x half> poison)87; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.llrint.nxv8i64.nxv8f16(<vscale x 8 x half> poison)88; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.llrint.nxv16i64.nxv16f16(<vscale x 16 x half> poison)89; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void90;91 call <vscale x 2 x i64> @llvm.llrint(<vscale x 2 x half> poison)92 call <vscale x 4 x i64> @llvm.llrint(<vscale x 4 x half> poison)93 call <vscale x 8 x i64> @llvm.llrint(<vscale x 8 x half> poison)94 call <vscale x 16 x i64> @llvm.llrint(<vscale x 16 x half> poison)95 ret void96}97 98define void @llrint_bf16() {99; CHECK-LABEL: 'llrint_bf16'100; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.llrint.nxv2i64.nxv2bf16(<vscale x 2 x bfloat> poison)101; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.llrint.nxv4i64.nxv4bf16(<vscale x 4 x bfloat> poison)102; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.llrint.nxv8i64.nxv8bf16(<vscale x 8 x bfloat> poison)103; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.llrint.nxv16i64.nxv16bf16(<vscale x 16 x bfloat> poison)104; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void105;106 call <vscale x 2 x i64> @llvm.llrint(<vscale x 2 x bfloat> poison)107 call <vscale x 4 x i64> @llvm.llrint(<vscale x 4 x bfloat> poison)108 call <vscale x 8 x i64> @llvm.llrint(<vscale x 8 x bfloat> poison)109 call <vscale x 16 x i64> @llvm.llrint(<vscale x 16 x bfloat> poison)110 ret void111}112 113 114define void @lround() {115; CHECK-LABEL: 'lround'116; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.lround.nxv2i64.nxv2f32(<vscale x 2 x float> poison)117; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.lround.nxv4i64.nxv4f32(<vscale x 4 x float> poison)118; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.lround.nxv8i64.nxv8f32(<vscale x 8 x float> poison)119; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.lround.nxv16i64.nxv16f32(<vscale x 16 x float> poison)120; CHECK-NEXT: Cost Model: Found costs of Invalid for: %5 = call <vscale x 2 x i64> @llvm.lround.nxv2i64.nxv2f64(<vscale x 2 x double> poison)121; CHECK-NEXT: Cost Model: Found costs of Invalid for: %6 = call <vscale x 4 x i64> @llvm.lround.nxv4i64.nxv4f64(<vscale x 4 x double> poison)122; CHECK-NEXT: Cost Model: Found costs of Invalid for: %7 = call <vscale x 8 x i64> @llvm.lround.nxv8i64.nxv8f64(<vscale x 8 x double> poison)123; CHECK-NEXT: Cost Model: Found costs of Invalid for: %8 = call <vscale x 16 x i64> @llvm.lround.nxv16i64.nxv16f64(<vscale x 16 x double> poison)124; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void125;126 call <vscale x 2 x i64> @llvm.lround(<vscale x 2 x float> poison)127 call <vscale x 4 x i64> @llvm.lround(<vscale x 4 x float> poison)128 call <vscale x 8 x i64> @llvm.lround(<vscale x 8 x float> poison)129 call <vscale x 16 x i64> @llvm.lround(<vscale x 16 x float> poison)130 call <vscale x 2 x i64> @llvm.lround(<vscale x 2 x double> poison)131 call <vscale x 4 x i64> @llvm.lround(<vscale x 4 x double> poison)132 call <vscale x 8 x i64> @llvm.lround(<vscale x 8 x double> poison)133 call <vscale x 16 x i64> @llvm.lround(<vscale x 16 x double> poison)134 ret void135}136 137define void @lround_fp16() {138; CHECK-LABEL: 'lround_fp16'139; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.lround.nxv2i64.nxv2f16(<vscale x 2 x half> poison)140; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.lround.nxv4i64.nxv4f16(<vscale x 4 x half> poison)141; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.lround.nxv8i64.nxv8f16(<vscale x 8 x half> poison)142; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.lround.nxv16i64.nxv16f16(<vscale x 16 x half> poison)143; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void144;145 call <vscale x 2 x i64> @llvm.lround(<vscale x 2 x half> poison)146 call <vscale x 4 x i64> @llvm.lround(<vscale x 4 x half> poison)147 call <vscale x 8 x i64> @llvm.lround(<vscale x 8 x half> poison)148 call <vscale x 16 x i64> @llvm.lround(<vscale x 16 x half> poison)149 ret void150}151 152define void @lround_bf16() {153; CHECK-LABEL: 'lround_bf16'154; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.lround.nxv2i64.nxv2bf16(<vscale x 2 x bfloat> poison)155; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.lround.nxv4i64.nxv4bf16(<vscale x 4 x bfloat> poison)156; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.lround.nxv8i64.nxv8bf16(<vscale x 8 x bfloat> poison)157; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.lround.nxv16i64.nxv16bf16(<vscale x 16 x bfloat> poison)158; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void159;160 call <vscale x 2 x i64> @llvm.lround(<vscale x 2 x bfloat> poison)161 call <vscale x 4 x i64> @llvm.lround(<vscale x 4 x bfloat> poison)162 call <vscale x 8 x i64> @llvm.lround(<vscale x 8 x bfloat> poison)163 call <vscale x 16 x i64> @llvm.lround(<vscale x 16 x bfloat> poison)164 ret void165}166 167define void @llround() {168; CHECK-LABEL: 'llround'169; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.llround.nxv2i64.nxv2f32(<vscale x 2 x float> poison)170; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.llround.nxv4i64.nxv4f32(<vscale x 4 x float> poison)171; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.llround.nxv8i64.nxv8f32(<vscale x 8 x float> poison)172; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.llround.nxv16i64.nxv16f32(<vscale x 16 x float> poison)173; CHECK-NEXT: Cost Model: Found costs of Invalid for: %5 = call <vscale x 2 x i64> @llvm.llround.nxv2i64.nxv2f64(<vscale x 2 x double> poison)174; CHECK-NEXT: Cost Model: Found costs of Invalid for: %6 = call <vscale x 4 x i64> @llvm.llround.nxv4i64.nxv4f64(<vscale x 4 x double> poison)175; CHECK-NEXT: Cost Model: Found costs of Invalid for: %7 = call <vscale x 8 x i64> @llvm.llround.nxv8i64.nxv8f64(<vscale x 8 x double> poison)176; CHECK-NEXT: Cost Model: Found costs of Invalid for: %8 = call <vscale x 16 x i64> @llvm.llround.nxv16i64.nxv16f64(<vscale x 16 x double> poison)177; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void178;179 call <vscale x 2 x i64> @llvm.llround(<vscale x 2 x float> poison)180 call <vscale x 4 x i64> @llvm.llround(<vscale x 4 x float> poison)181 call <vscale x 8 x i64> @llvm.llround(<vscale x 8 x float> poison)182 call <vscale x 16 x i64> @llvm.llround(<vscale x 16 x float> poison)183 call <vscale x 2 x i64> @llvm.llround(<vscale x 2 x double> poison)184 call <vscale x 4 x i64> @llvm.llround(<vscale x 4 x double> poison)185 call <vscale x 8 x i64> @llvm.llround(<vscale x 8 x double> poison)186 call <vscale x 16 x i64> @llvm.llround(<vscale x 16 x double> poison)187 ret void188}189 190define void @llround_fp16() {191; CHECK-LABEL: 'llround_fp16'192; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.llround.nxv2i64.nxv2f16(<vscale x 2 x half> poison)193; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.llround.nxv4i64.nxv4f16(<vscale x 4 x half> poison)194; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.llround.nxv8i64.nxv8f16(<vscale x 8 x half> poison)195; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.llround.nxv16i64.nxv16f16(<vscale x 16 x half> poison)196; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void197;198 call <vscale x 2 x i64> @llvm.llround(<vscale x 2 x half> poison)199 call <vscale x 4 x i64> @llvm.llround(<vscale x 4 x half> poison)200 call <vscale x 8 x i64> @llvm.llround(<vscale x 8 x half> poison)201 call <vscale x 16 x i64> @llvm.llround(<vscale x 16 x half> poison)202 ret void203}204 205define void @llround_bf16() {206; CHECK-LABEL: 'llround_bf16'207; CHECK-NEXT: Cost Model: Found costs of Invalid for: %1 = call <vscale x 2 x i64> @llvm.llround.nxv2i64.nxv2bf16(<vscale x 2 x bfloat> poison)208; CHECK-NEXT: Cost Model: Found costs of Invalid for: %2 = call <vscale x 4 x i64> @llvm.llround.nxv4i64.nxv4bf16(<vscale x 4 x bfloat> poison)209; CHECK-NEXT: Cost Model: Found costs of Invalid for: %3 = call <vscale x 8 x i64> @llvm.llround.nxv8i64.nxv8bf16(<vscale x 8 x bfloat> poison)210; CHECK-NEXT: Cost Model: Found costs of Invalid for: %4 = call <vscale x 16 x i64> @llvm.llround.nxv16i64.nxv16bf16(<vscale x 16 x bfloat> poison)211; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void212;213 call <vscale x 2 x i64> @llvm.llround(<vscale x 2 x bfloat> poison)214 call <vscale x 4 x i64> @llvm.llround(<vscale x 4 x bfloat> poison)215 call <vscale x 8 x i64> @llvm.llround(<vscale x 8 x bfloat> poison)216 call <vscale x 16 x i64> @llvm.llround(<vscale x 16 x bfloat> poison)217 ret void218}219