525 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -S < %s | FileCheck %s --check-prefixes=CHECK,TUNIT3 4define double @ret_fpext_f32_to_f64(float %arg0) {5; CHECK-LABEL: define nofpclass(sub) double @ret_fpext_f32_to_f646; CHECK-SAME: (float [[ARG0:%.*]]) #[[ATTR0:[0-9]+]] {7; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double8; CHECK-NEXT: ret double [[EXT]]9;10 %ext = fpext float %arg0 to double11 ret double %ext12}13 14define <2 x double> @ret_fpext_v2f32_to_v2f64(<2 x float> %arg0) {15; CHECK-LABEL: define nofpclass(sub) <2 x double> @ret_fpext_v2f32_to_v2f6416; CHECK-SAME: (<2 x float> [[ARG0:%.*]]) #[[ATTR0]] {17; CHECK-NEXT: [[EXT:%.*]] = fpext <2 x float> [[ARG0]] to <2 x double>18; CHECK-NEXT: ret <2 x double> [[EXT]]19;20 %ext = fpext <2 x float> %arg0 to <2 x double>21 ret <2 x double> %ext22}23 24define double @ret_fpext_f32_to_f64_nonan(float nofpclass(nan) %arg0) {25; CHECK-LABEL: define nofpclass(nan sub) double @ret_fpext_f32_to_f64_nonan26; CHECK-SAME: (float nofpclass(nan) [[ARG0:%.*]]) #[[ATTR0]] {27; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double28; CHECK-NEXT: ret double [[EXT]]29;30 %ext = fpext float %arg0 to double31 ret double %ext32}33 34define <2 x double> @ret_fpext_v2f32_to_v2f64_nonan(<2 x float> nofpclass(nan) %arg0) {35; CHECK-LABEL: define nofpclass(nan sub) <2 x double> @ret_fpext_v2f32_to_v2f64_nonan36; CHECK-SAME: (<2 x float> nofpclass(nan) [[ARG0:%.*]]) #[[ATTR0]] {37; CHECK-NEXT: [[EXT:%.*]] = fpext <2 x float> [[ARG0]] to <2 x double>38; CHECK-NEXT: ret <2 x double> [[EXT]]39;40 %ext = fpext <2 x float> %arg0 to <2 x double>41 ret <2 x double> %ext42}43 44define double @ret_fpext_f32_to_f64_noqnan(float nofpclass(qnan) %arg0) {45; CHECK-LABEL: define nofpclass(qnan sub) double @ret_fpext_f32_to_f64_noqnan46; CHECK-SAME: (float nofpclass(qnan) [[ARG0:%.*]]) #[[ATTR0]] {47; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double48; CHECK-NEXT: ret double [[EXT]]49;50 %ext = fpext float %arg0 to double51 ret double %ext52}53 54define double @ret_fpext_f32_to_f64_nosnan(float nofpclass(snan) %arg0) {55; CHECK-LABEL: define nofpclass(snan sub) double @ret_fpext_f32_to_f64_nosnan56; CHECK-SAME: (float nofpclass(snan) [[ARG0:%.*]]) #[[ATTR0]] {57; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double58; CHECK-NEXT: ret double [[EXT]]59;60 %ext = fpext float %arg0 to double61 ret double %ext62}63 64define double @ret_fpext_f32_to_f64_noinf(float nofpclass(inf) %arg0) {65; CHECK-LABEL: define nofpclass(inf sub) double @ret_fpext_f32_to_f64_noinf66; CHECK-SAME: (float nofpclass(inf) [[ARG0:%.*]]) #[[ATTR0]] {67; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double68; CHECK-NEXT: ret double [[EXT]]69;70 %ext = fpext float %arg0 to double71 ret double %ext72}73 74define double @ret_fpext_f32_to_f64_nopinf(float nofpclass(pinf) %arg0) {75; CHECK-LABEL: define nofpclass(pinf sub) double @ret_fpext_f32_to_f64_nopinf76; CHECK-SAME: (float nofpclass(pinf) [[ARG0:%.*]]) #[[ATTR0]] {77; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double78; CHECK-NEXT: ret double [[EXT]]79;80 %ext = fpext float %arg0 to double81 ret double %ext82}83 84define double @ret_fpext_f32_to_f64_noninf(float nofpclass(ninf) %arg0) {85; CHECK-LABEL: define nofpclass(ninf sub) double @ret_fpext_f32_to_f64_noninf86; CHECK-SAME: (float nofpclass(ninf) [[ARG0:%.*]]) #[[ATTR0]] {87; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double88; CHECK-NEXT: ret double [[EXT]]89;90 %ext = fpext float %arg0 to double91 ret double %ext92}93 94define double @ret_fpext_f32_to_f64_nozero(float nofpclass(zero) %arg0) {95; CHECK-LABEL: define nofpclass(zero sub) double @ret_fpext_f32_to_f64_nozero96; CHECK-SAME: (float nofpclass(zero) [[ARG0:%.*]]) #[[ATTR0]] {97; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double98; CHECK-NEXT: ret double [[EXT]]99;100 %ext = fpext float %arg0 to double101 ret double %ext102}103 104define double @ret_fpext_f32_to_f64_nopzero(float nofpclass(pzero) %arg0) {105; CHECK-LABEL: define nofpclass(pzero sub) double @ret_fpext_f32_to_f64_nopzero106; CHECK-SAME: (float nofpclass(pzero) [[ARG0:%.*]]) #[[ATTR0]] {107; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double108; CHECK-NEXT: ret double [[EXT]]109;110 %ext = fpext float %arg0 to double111 ret double %ext112}113 114define double @ret_fpext_f32_to_f64_nonzero(float nofpclass(nzero) %arg0) {115; CHECK-LABEL: define nofpclass(nzero sub) double @ret_fpext_f32_to_f64_nonzero116; CHECK-SAME: (float nofpclass(nzero) [[ARG0:%.*]]) #[[ATTR0]] {117; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double118; CHECK-NEXT: ret double [[EXT]]119;120 %ext = fpext float %arg0 to double121 ret double %ext122}123 124define double @ret_fpext_f32_to_f64_nonan_noinf(float nofpclass(nan inf) %arg0) {125; CHECK-LABEL: define nofpclass(nan inf sub) double @ret_fpext_f32_to_f64_nonan_noinf126; CHECK-SAME: (float nofpclass(nan inf) [[ARG0:%.*]]) #[[ATTR0]] {127; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double128; CHECK-NEXT: ret double [[EXT]]129;130 %ext = fpext float %arg0 to double131 ret double %ext132}133 134define double @ret_fpext_f32_to_f64_nosub(float nofpclass(sub) %arg0) {135; CHECK-LABEL: define nofpclass(sub) double @ret_fpext_f32_to_f64_nosub136; CHECK-SAME: (float nofpclass(sub) [[ARG0:%.*]]) #[[ATTR0]] {137; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double138; CHECK-NEXT: ret double [[EXT]]139;140 %ext = fpext float %arg0 to double141 ret double %ext142}143 144define double @ret_fpext_f32_to_f64_nonorm(float nofpclass(norm) %arg0) {145; CHECK-LABEL: define nofpclass(sub) double @ret_fpext_f32_to_f64_nonorm146; CHECK-SAME: (float nofpclass(norm) [[ARG0:%.*]]) #[[ATTR0]] {147; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double148; CHECK-NEXT: ret double [[EXT]]149;150 %ext = fpext float %arg0 to double151 ret double %ext152}153 154define double @ret_fpext_f32_to_f64_negonly_zero(float nofpclass(pinf pnorm psub pzero) %arg0) {155; CHECK-LABEL: define nofpclass(pinf pzero sub pnorm) double @ret_fpext_f32_to_f64_negonly_zero156; CHECK-SAME: (float nofpclass(pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR0]] {157; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double158; CHECK-NEXT: ret double [[EXT]]159;160 %ext = fpext float %arg0 to double161 ret double %ext162}163 164define double @ret_fpext_f32_to_f64_negonly(float nofpclass(pinf pnorm psub) %arg0) {165; CHECK-LABEL: define nofpclass(pinf sub pnorm) double @ret_fpext_f32_to_f64_negonly166; CHECK-SAME: (float nofpclass(pinf psub pnorm) [[ARG0:%.*]]) #[[ATTR0]] {167; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double168; CHECK-NEXT: ret double [[EXT]]169;170 %ext = fpext float %arg0 to double171 ret double %ext172}173 174define double @ret_fpext_f32_to_f64_negonly_ord(float nofpclass(pinf pnorm psub pzero nan) %arg0) {175; CHECK-LABEL: define nofpclass(nan pinf pzero sub pnorm) double @ret_fpext_f32_to_f64_negonly_ord176; CHECK-SAME: (float nofpclass(nan pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR0]] {177; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double178; CHECK-NEXT: ret double [[EXT]]179;180 %ext = fpext float %arg0 to double181 ret double %ext182}183 184define double @ret_fpext_f32_to_f64_posonly_zero(float nofpclass(ninf nnorm nsub nzero) %arg0) {185; CHECK-LABEL: define nofpclass(ninf nzero sub nnorm) double @ret_fpext_f32_to_f64_posonly_zero186; CHECK-SAME: (float nofpclass(ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {187; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double188; CHECK-NEXT: ret double [[EXT]]189;190 %ext = fpext float %arg0 to double191 ret double %ext192}193 194define double @ret_fpext_f32_to_f64_posonly(float nofpclass(ninf nnorm nsub) %arg0) {195; CHECK-LABEL: define nofpclass(ninf sub nnorm) double @ret_fpext_f32_to_f64_posonly196; CHECK-SAME: (float nofpclass(ninf nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {197; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double198; CHECK-NEXT: ret double [[EXT]]199;200 %ext = fpext float %arg0 to double201 ret double %ext202}203 204define double @ret_fpext_f32_to_f64_posonly_nan(float nofpclass(ninf nnorm nsub nzero nan) %arg0) {205; CHECK-LABEL: define nofpclass(nan ninf nzero sub nnorm) double @ret_fpext_f32_to_f64_posonly_nan206; CHECK-SAME: (float nofpclass(nan ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {207; CHECK-NEXT: [[EXT:%.*]] = fpext float [[ARG0]] to double208; CHECK-NEXT: ret double [[EXT]]209;210 %ext = fpext float %arg0 to double211 ret double %ext212}213 214define float @ret_fpext_bf16_f32(bfloat %arg0) {215; CHECK-LABEL: define float @ret_fpext_bf16_f32216; CHECK-SAME: (bfloat [[ARG0:%.*]]) #[[ATTR0]] {217; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float218; CHECK-NEXT: ret float [[EXT]]219;220 %ext = fpext bfloat %arg0 to float221 ret float %ext222}223 224define <2 x float> @ret_fpext_v2bf16_v2f32(<2 x bfloat> %arg0) {225; CHECK-LABEL: define <2 x float> @ret_fpext_v2bf16_v2f32226; CHECK-SAME: (<2 x bfloat> [[ARG0:%.*]]) #[[ATTR0]] {227; CHECK-NEXT: [[EXT:%.*]] = fpext <2 x bfloat> [[ARG0]] to <2 x float>228; CHECK-NEXT: ret <2 x float> [[EXT]]229;230 %ext = fpext <2 x bfloat> %arg0 to <2 x float>231 ret <2 x float> %ext232}233 234define float @ret_fpext_bf16_f32_nonan(bfloat nofpclass(nan) %arg0) {235; CHECK-LABEL: define nofpclass(nan) float @ret_fpext_bf16_f32_nonan236; CHECK-SAME: (bfloat nofpclass(nan) [[ARG0:%.*]]) #[[ATTR0]] {237; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float238; CHECK-NEXT: ret float [[EXT]]239;240 %ext = fpext bfloat %arg0 to float241 ret float %ext242}243 244define <2 x float> @ret_fpext_v2bf16_v2f32_nonan(<2 x bfloat> nofpclass(nan) %arg0) {245; CHECK-LABEL: define nofpclass(nan) <2 x float> @ret_fpext_v2bf16_v2f32_nonan246; CHECK-SAME: (<2 x bfloat> nofpclass(nan) [[ARG0:%.*]]) #[[ATTR0]] {247; CHECK-NEXT: [[EXT:%.*]] = fpext <2 x bfloat> [[ARG0]] to <2 x float>248; CHECK-NEXT: ret <2 x float> [[EXT]]249;250 %ext = fpext <2 x bfloat> %arg0 to <2 x float>251 ret <2 x float> %ext252}253 254define float @ret_fpext_bf16_f32_noqnan(bfloat nofpclass(qnan) %arg0) {255; CHECK-LABEL: define nofpclass(qnan) float @ret_fpext_bf16_f32_noqnan256; CHECK-SAME: (bfloat nofpclass(qnan) [[ARG0:%.*]]) #[[ATTR0]] {257; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float258; CHECK-NEXT: ret float [[EXT]]259;260 %ext = fpext bfloat %arg0 to float261 ret float %ext262}263 264define float @ret_fpext_bf16_f32_nosnan(bfloat nofpclass(snan) %arg0) {265; CHECK-LABEL: define nofpclass(snan) float @ret_fpext_bf16_f32_nosnan266; CHECK-SAME: (bfloat nofpclass(snan) [[ARG0:%.*]]) #[[ATTR0]] {267; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float268; CHECK-NEXT: ret float [[EXT]]269;270 %ext = fpext bfloat %arg0 to float271 ret float %ext272}273 274define float @ret_fpext_bf16_f32_noinf(bfloat nofpclass(inf) %arg0) {275; CHECK-LABEL: define nofpclass(inf) float @ret_fpext_bf16_f32_noinf276; CHECK-SAME: (bfloat nofpclass(inf) [[ARG0:%.*]]) #[[ATTR0]] {277; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float278; CHECK-NEXT: ret float [[EXT]]279;280 %ext = fpext bfloat %arg0 to float281 ret float %ext282}283 284define float @ret_fpext_bf16_f32_nopinf(bfloat nofpclass(pinf) %arg0) {285; CHECK-LABEL: define nofpclass(pinf) float @ret_fpext_bf16_f32_nopinf286; CHECK-SAME: (bfloat nofpclass(pinf) [[ARG0:%.*]]) #[[ATTR0]] {287; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float288; CHECK-NEXT: ret float [[EXT]]289;290 %ext = fpext bfloat %arg0 to float291 ret float %ext292}293 294define float @ret_fpext_bf16_f32_noninf(bfloat nofpclass(ninf) %arg0) {295; CHECK-LABEL: define nofpclass(ninf) float @ret_fpext_bf16_f32_noninf296; CHECK-SAME: (bfloat nofpclass(ninf) [[ARG0:%.*]]) #[[ATTR0]] {297; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float298; CHECK-NEXT: ret float [[EXT]]299;300 %ext = fpext bfloat %arg0 to float301 ret float %ext302}303 304define float @ret_fpext_bf16_f32_nozero(bfloat nofpclass(zero) %arg0) {305; CHECK-LABEL: define nofpclass(zero) float @ret_fpext_bf16_f32_nozero306; CHECK-SAME: (bfloat nofpclass(zero) [[ARG0:%.*]]) #[[ATTR0]] {307; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float308; CHECK-NEXT: ret float [[EXT]]309;310 %ext = fpext bfloat %arg0 to float311 ret float %ext312}313 314define float @ret_fpext_bf16_f32_nopzero(bfloat nofpclass(pzero) %arg0) {315; CHECK-LABEL: define nofpclass(pzero) float @ret_fpext_bf16_f32_nopzero316; CHECK-SAME: (bfloat nofpclass(pzero) [[ARG0:%.*]]) #[[ATTR0]] {317; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float318; CHECK-NEXT: ret float [[EXT]]319;320 %ext = fpext bfloat %arg0 to float321 ret float %ext322}323 324define float @ret_fpext_bf16_f32_nonzero(bfloat nofpclass(nzero) %arg0) {325; CHECK-LABEL: define nofpclass(nzero) float @ret_fpext_bf16_f32_nonzero326; CHECK-SAME: (bfloat nofpclass(nzero) [[ARG0:%.*]]) #[[ATTR0]] {327; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float328; CHECK-NEXT: ret float [[EXT]]329;330 %ext = fpext bfloat %arg0 to float331 ret float %ext332}333 334define float @ret_fpext_bf16_f32_nonan_noinf(bfloat nofpclass(nan inf) %arg0) {335; CHECK-LABEL: define nofpclass(nan inf) float @ret_fpext_bf16_f32_nonan_noinf336; CHECK-SAME: (bfloat nofpclass(nan inf) [[ARG0:%.*]]) #[[ATTR0]] {337; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float338; CHECK-NEXT: ret float [[EXT]]339;340 %ext = fpext bfloat %arg0 to float341 ret float %ext342}343 344define float @ret_fpext_bf16_f32_nosub(bfloat nofpclass(sub) %arg0) {345; CHECK-LABEL: define nofpclass(sub) float @ret_fpext_bf16_f32_nosub346; CHECK-SAME: (bfloat nofpclass(sub) [[ARG0:%.*]]) #[[ATTR0]] {347; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float348; CHECK-NEXT: ret float [[EXT]]349;350 %ext = fpext bfloat %arg0 to float351 ret float %ext352}353 354define float @ret_fpext_bf16_f32_nonorm(bfloat nofpclass(norm) %arg0) {355; CHECK-LABEL: define nofpclass(norm) float @ret_fpext_bf16_f32_nonorm356; CHECK-SAME: (bfloat nofpclass(norm) [[ARG0:%.*]]) #[[ATTR0]] {357; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float358; CHECK-NEXT: ret float [[EXT]]359;360 %ext = fpext bfloat %arg0 to float361 ret float %ext362}363 364define double @ret_fpext_bf16_f64(bfloat %arg0) {365; CHECK-LABEL: define nofpclass(sub) double @ret_fpext_bf16_f64366; CHECK-SAME: (bfloat [[ARG0:%.*]]) #[[ATTR0]] {367; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double368; CHECK-NEXT: ret double [[EXT]]369;370 %ext = fpext bfloat %arg0 to double371 ret double %ext372}373 374define double @ret_fpext_bf16_f64_nonan(bfloat nofpclass(nan) %arg0) {375; CHECK-LABEL: define nofpclass(nan sub) double @ret_fpext_bf16_f64_nonan376; CHECK-SAME: (bfloat nofpclass(nan) [[ARG0:%.*]]) #[[ATTR0]] {377; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double378; CHECK-NEXT: ret double [[EXT]]379;380 %ext = fpext bfloat %arg0 to double381 ret double %ext382}383 384define double @ret_fpext_bf16_f64_noqnan(bfloat nofpclass(qnan) %arg0) {385; CHECK-LABEL: define nofpclass(qnan sub) double @ret_fpext_bf16_f64_noqnan386; CHECK-SAME: (bfloat nofpclass(qnan) [[ARG0:%.*]]) #[[ATTR0]] {387; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double388; CHECK-NEXT: ret double [[EXT]]389;390 %ext = fpext bfloat %arg0 to double391 ret double %ext392}393 394define double @ret_fpext_bf16_f64_nosnan(bfloat nofpclass(snan) %arg0) {395; CHECK-LABEL: define nofpclass(snan sub) double @ret_fpext_bf16_f64_nosnan396; CHECK-SAME: (bfloat nofpclass(snan) [[ARG0:%.*]]) #[[ATTR0]] {397; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double398; CHECK-NEXT: ret double [[EXT]]399;400 %ext = fpext bfloat %arg0 to double401 ret double %ext402}403 404define double @ret_fpext_bf16_f64_noinf(bfloat nofpclass(inf) %arg0) {405; CHECK-LABEL: define nofpclass(inf sub) double @ret_fpext_bf16_f64_noinf406; CHECK-SAME: (bfloat nofpclass(inf) [[ARG0:%.*]]) #[[ATTR0]] {407; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double408; CHECK-NEXT: ret double [[EXT]]409;410 %ext = fpext bfloat %arg0 to double411 ret double %ext412}413 414define double @ret_fpext_bf16_f64_nopinf(bfloat nofpclass(pinf) %arg0) {415; CHECK-LABEL: define nofpclass(pinf sub) double @ret_fpext_bf16_f64_nopinf416; CHECK-SAME: (bfloat nofpclass(pinf) [[ARG0:%.*]]) #[[ATTR0]] {417; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double418; CHECK-NEXT: ret double [[EXT]]419;420 %ext = fpext bfloat %arg0 to double421 ret double %ext422}423 424define double @ret_fpext_bf16_f64_noninf(bfloat nofpclass(ninf) %arg0) {425; CHECK-LABEL: define nofpclass(ninf sub) double @ret_fpext_bf16_f64_noninf426; CHECK-SAME: (bfloat nofpclass(ninf) [[ARG0:%.*]]) #[[ATTR0]] {427; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double428; CHECK-NEXT: ret double [[EXT]]429;430 %ext = fpext bfloat %arg0 to double431 ret double %ext432}433 434define double @ret_fpext_bf16_f64_nozero(bfloat nofpclass(zero) %arg0) {435; CHECK-LABEL: define nofpclass(zero sub) double @ret_fpext_bf16_f64_nozero436; CHECK-SAME: (bfloat nofpclass(zero) [[ARG0:%.*]]) #[[ATTR0]] {437; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double438; CHECK-NEXT: ret double [[EXT]]439;440 %ext = fpext bfloat %arg0 to double441 ret double %ext442}443 444define double @ret_fpext_bf16_f64_nopzero(bfloat nofpclass(pzero) %arg0) {445; CHECK-LABEL: define nofpclass(pzero sub) double @ret_fpext_bf16_f64_nopzero446; CHECK-SAME: (bfloat nofpclass(pzero) [[ARG0:%.*]]) #[[ATTR0]] {447; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double448; CHECK-NEXT: ret double [[EXT]]449;450 %ext = fpext bfloat %arg0 to double451 ret double %ext452}453 454define double @ret_fpext_bf16_f64_nonzero(bfloat nofpclass(nzero) %arg0) {455; CHECK-LABEL: define nofpclass(nzero sub) double @ret_fpext_bf16_f64_nonzero456; CHECK-SAME: (bfloat nofpclass(nzero) [[ARG0:%.*]]) #[[ATTR0]] {457; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double458; CHECK-NEXT: ret double [[EXT]]459;460 %ext = fpext bfloat %arg0 to double461 ret double %ext462}463 464define double @ret_fpext_bf16_f64_nonan_noinf(bfloat nofpclass(nan inf) %arg0) {465; CHECK-LABEL: define nofpclass(nan inf sub) double @ret_fpext_bf16_f64_nonan_noinf466; CHECK-SAME: (bfloat nofpclass(nan inf) [[ARG0:%.*]]) #[[ATTR0]] {467; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double468; CHECK-NEXT: ret double [[EXT]]469;470 %ext = fpext bfloat %arg0 to double471 ret double %ext472}473 474define double @ret_fpext_bf16_f64_nosub(bfloat nofpclass(sub) %arg0) {475; CHECK-LABEL: define nofpclass(sub) double @ret_fpext_bf16_f64_nosub476; CHECK-SAME: (bfloat nofpclass(sub) [[ARG0:%.*]]) #[[ATTR0]] {477; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double478; CHECK-NEXT: ret double [[EXT]]479;480 %ext = fpext bfloat %arg0 to double481 ret double %ext482}483 484define double @ret_fpext_bf16_f64_nonorm(bfloat nofpclass(norm) %arg0) {485; CHECK-LABEL: define nofpclass(sub) double @ret_fpext_bf16_f64_nonorm486; CHECK-SAME: (bfloat nofpclass(norm) [[ARG0:%.*]]) #[[ATTR0]] {487; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double488; CHECK-NEXT: ret double [[EXT]]489;490 %ext = fpext bfloat %arg0 to double491 ret double %ext492}493 494define double @ret_fpext_bf16_f64_nonorm_psub(bfloat nofpclass(norm psub) %arg0) {495; CHECK-LABEL: define nofpclass(sub pnorm) double @ret_fpext_bf16_f64_nonorm_psub496; CHECK-SAME: (bfloat nofpclass(psub norm) [[ARG0:%.*]]) #[[ATTR0]] {497; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double498; CHECK-NEXT: ret double [[EXT]]499;500 %ext = fpext bfloat %arg0 to double501 ret double %ext502}503 504define double @ret_fpext_bf16_f64_nonorm_nsub(bfloat nofpclass(norm nsub) %arg0) {505; CHECK-LABEL: define nofpclass(sub nnorm) double @ret_fpext_bf16_f64_nonorm_nsub506; CHECK-SAME: (bfloat nofpclass(nsub norm) [[ARG0:%.*]]) #[[ATTR0]] {507; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double508; CHECK-NEXT: ret double [[EXT]]509;510 %ext = fpext bfloat %arg0 to double511 ret double %ext512}513 514define double @ret_fpext_bf16_f64_nonorm_sub(bfloat nofpclass(norm sub) %arg0) {515; CHECK-LABEL: define nofpclass(sub norm) double @ret_fpext_bf16_f64_nonorm_sub516; CHECK-SAME: (bfloat nofpclass(sub norm) [[ARG0:%.*]]) #[[ATTR0]] {517; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to double518; CHECK-NEXT: ret double [[EXT]]519;520 %ext = fpext bfloat %arg0 to double521 ret double %ext522}523;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:524; TUNIT: {{.*}}525