brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.6 KiB · ea2a4f4 Raw
338 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 4declare float @llvm.fptrunc.round.f32.f64(double, metadata)5 6define float @ret_fptrunc(double %arg0) {7; CHECK-LABEL: define float @ret_fptrunc8; CHECK-SAME: (double [[ARG0:%.*]]) #[[ATTR1:[0-9]+]] {9; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float10; CHECK-NEXT:    ret float [[EXT]]11;12  %ext = fptrunc double %arg0 to float13  ret float %ext14}15 16define float @ret_fptrunc_nonan(double nofpclass(nan) %arg0) {17; CHECK-LABEL: define nofpclass(nan) float @ret_fptrunc_nonan18; CHECK-SAME: (double nofpclass(nan) [[ARG0:%.*]]) #[[ATTR1]] {19; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float20; CHECK-NEXT:    ret float [[EXT]]21;22  %ext = fptrunc double %arg0 to float23  ret float %ext24}25 26define float @ret_fptrunc_noqnan(double nofpclass(qnan) %arg0) {27; CHECK-LABEL: define float @ret_fptrunc_noqnan28; CHECK-SAME: (double nofpclass(qnan) [[ARG0:%.*]]) #[[ATTR1]] {29; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float30; CHECK-NEXT:    ret float [[EXT]]31;32  %ext = fptrunc double %arg0 to float33  ret float %ext34}35 36define float @ret_fptrunc_nosnan(double nofpclass(snan) %arg0) {37; CHECK-LABEL: define nofpclass(snan) float @ret_fptrunc_nosnan38; CHECK-SAME: (double nofpclass(snan) [[ARG0:%.*]]) #[[ATTR1]] {39; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float40; CHECK-NEXT:    ret float [[EXT]]41;42  %ext = fptrunc double %arg0 to float43  ret float %ext44}45 46define float @ret_fptrunc_noinf(double nofpclass(inf) %arg0) {47; CHECK-LABEL: define float @ret_fptrunc_noinf48; CHECK-SAME: (double nofpclass(inf) [[ARG0:%.*]]) #[[ATTR1]] {49; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float50; CHECK-NEXT:    ret float [[EXT]]51;52  %ext = fptrunc double %arg0 to float53  ret float %ext54}55 56define float @ret_fptrunc_nopinf(double nofpclass(pinf) %arg0) {57; CHECK-LABEL: define float @ret_fptrunc_nopinf58; CHECK-SAME: (double nofpclass(pinf) [[ARG0:%.*]]) #[[ATTR1]] {59; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float60; CHECK-NEXT:    ret float [[EXT]]61;62  %ext = fptrunc double %arg0 to float63  ret float %ext64}65 66define float @ret_fptrunc_noninf(double nofpclass(ninf) %arg0) {67; CHECK-LABEL: define float @ret_fptrunc_noninf68; CHECK-SAME: (double nofpclass(ninf) [[ARG0:%.*]]) #[[ATTR1]] {69; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float70; CHECK-NEXT:    ret float [[EXT]]71;72  %ext = fptrunc double %arg0 to float73  ret float %ext74}75 76define float @ret_fptrunc_nozero(double nofpclass(zero) %arg0) {77; CHECK-LABEL: define float @ret_fptrunc_nozero78; CHECK-SAME: (double nofpclass(zero) [[ARG0:%.*]]) #[[ATTR1]] {79; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float80; CHECK-NEXT:    ret float [[EXT]]81;82  %ext = fptrunc double %arg0 to float83  ret float %ext84}85 86define float @ret_fptrunc_nopzero(double nofpclass(pzero) %arg0) {87; CHECK-LABEL: define float @ret_fptrunc_nopzero88; CHECK-SAME: (double nofpclass(pzero) [[ARG0:%.*]]) #[[ATTR1]] {89; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float90; CHECK-NEXT:    ret float [[EXT]]91;92  %ext = fptrunc double %arg0 to float93  ret float %ext94}95 96define float @ret_fptrunc_nonzero(double nofpclass(nzero) %arg0) {97; CHECK-LABEL: define float @ret_fptrunc_nonzero98; CHECK-SAME: (double nofpclass(nzero) [[ARG0:%.*]]) #[[ATTR1]] {99; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float100; CHECK-NEXT:    ret float [[EXT]]101;102  %ext = fptrunc double %arg0 to float103  ret float %ext104}105 106define float @ret_fptrunc_nonan_noinf(double nofpclass(nan inf) %arg0) {107; CHECK-LABEL: define nofpclass(nan) float @ret_fptrunc_nonan_noinf108; CHECK-SAME: (double nofpclass(nan inf) [[ARG0:%.*]]) #[[ATTR1]] {109; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float110; CHECK-NEXT:    ret float [[EXT]]111;112  %ext = fptrunc double %arg0 to float113  ret float %ext114}115 116define float @ret_fptrunc_nosub(double nofpclass(sub) %arg0) {117; CHECK-LABEL: define float @ret_fptrunc_nosub118; CHECK-SAME: (double nofpclass(sub) [[ARG0:%.*]]) #[[ATTR1]] {119; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float120; CHECK-NEXT:    ret float [[EXT]]121;122  %ext = fptrunc double %arg0 to float123  ret float %ext124}125 126define float @ret_fptrunc_nonorm(double nofpclass(norm) %arg0) {127; CHECK-LABEL: define float @ret_fptrunc_nonorm128; CHECK-SAME: (double nofpclass(norm) [[ARG0:%.*]]) #[[ATTR1]] {129; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float130; CHECK-NEXT:    ret float [[EXT]]131;132  %ext = fptrunc double %arg0 to float133  ret float %ext134}135 136define float @ret_fptrunc_posonly(double nofpclass(ninf nnorm nsub nzero) %arg0) {137; CHECK-LABEL: define nofpclass(ninf nsub nnorm) float @ret_fptrunc_posonly138; CHECK-SAME: (double nofpclass(ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {139; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float140; CHECK-NEXT:    ret float [[EXT]]141;142  %ext = fptrunc double %arg0 to float143  ret float %ext144}145 146define float @ret_fptrunc_posonly_zero(double nofpclass(ninf nnorm nsub) %arg0) {147; CHECK-LABEL: define nofpclass(ninf nsub nnorm) float @ret_fptrunc_posonly_zero148; CHECK-SAME: (double nofpclass(ninf nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {149; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float150; CHECK-NEXT:    ret float [[EXT]]151;152  %ext = fptrunc double %arg0 to float153  ret float %ext154}155 156define float @ret_fptrunc_posonly_zero_nan(double nofpclass(ninf nnorm nsub nan) %arg0) {157; CHECK-LABEL: define nofpclass(nan ninf nsub nnorm) float @ret_fptrunc_posonly_zero_nan158; CHECK-SAME: (double nofpclass(nan ninf nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {159; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float160; CHECK-NEXT:    ret float [[EXT]]161;162  %ext = fptrunc double %arg0 to float163  ret float %ext164}165 166define float @ret_fptrunc_posonly_nan(double nofpclass(ninf nnorm nsub nzero nan) %arg0) {167; CHECK-LABEL: define nofpclass(nan ninf nsub nnorm) float @ret_fptrunc_posonly_nan168; CHECK-SAME: (double nofpclass(nan ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {169; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float170; CHECK-NEXT:    ret float [[EXT]]171;172  %ext = fptrunc double %arg0 to float173  ret float %ext174}175 176define float @ret_fptrunc_negonly(double nofpclass(pinf pnorm psub pzero) %arg0) {177; CHECK-LABEL: define float @ret_fptrunc_negonly178; CHECK-SAME: (double nofpclass(pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {179; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float180; CHECK-NEXT:    ret float [[EXT]]181;182  %ext = fptrunc double %arg0 to float183  ret float %ext184}185 186define float @ret_fptrunc_negonly_zero(double nofpclass(pinf pnorm psub) %arg0) {187; CHECK-LABEL: define float @ret_fptrunc_negonly_zero188; CHECK-SAME: (double nofpclass(pinf psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {189; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float190; CHECK-NEXT:    ret float [[EXT]]191;192  %ext = fptrunc double %arg0 to float193  ret float %ext194}195 196define float @ret_fptrunc_negonly_zero_nan(double nofpclass(pinf pnorm psub nan) %arg0) {197; CHECK-LABEL: define nofpclass(nan) float @ret_fptrunc_negonly_zero_nan198; CHECK-SAME: (double nofpclass(nan pinf psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {199; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float200; CHECK-NEXT:    ret float [[EXT]]201;202  %ext = fptrunc double %arg0 to float203  ret float %ext204}205 206define float @ret_fptrunc_round(double %arg0) {207; CHECK-LABEL: define float @ret_fptrunc_round208; CHECK-SAME: (double [[ARG0:%.*]]) #[[ATTR1]] {209; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double [[ARG0]], metadata !"round.downward") #[[ATTR2:[0-9]+]]210; CHECK-NEXT:    ret float [[EXT]]211;212  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")213  ret float %ext214}215 216define float @ret_fptrunc_round_nonan(double nofpclass(nan) %arg0) {217; CHECK-LABEL: define nofpclass(nan) float @ret_fptrunc_round_nonan218; CHECK-SAME: (double nofpclass(nan) [[ARG0:%.*]]) #[[ATTR1]] {219; CHECK-NEXT:    [[EXT:%.*]] = call nofpclass(nan) float @llvm.fptrunc.round.f32.f64(double nofpclass(nan) [[ARG0]], metadata !"round.downward") #[[ATTR2]]220; CHECK-NEXT:    ret float [[EXT]]221;222  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")223  ret float %ext224}225 226define float @ret_fptrunc_round_noqnan(double nofpclass(qnan) %arg0) {227; CHECK-LABEL: define float @ret_fptrunc_round_noqnan228; CHECK-SAME: (double nofpclass(qnan) [[ARG0:%.*]]) #[[ATTR1]] {229; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double nofpclass(qnan) [[ARG0]], metadata !"round.downward") #[[ATTR2]]230; CHECK-NEXT:    ret float [[EXT]]231;232  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")233  ret float %ext234}235 236define float @ret_fptrunc_round_nosnan(double nofpclass(snan) %arg0) {237; CHECK-LABEL: define nofpclass(snan) float @ret_fptrunc_round_nosnan238; CHECK-SAME: (double nofpclass(snan) [[ARG0:%.*]]) #[[ATTR1]] {239; CHECK-NEXT:    [[EXT:%.*]] = call nofpclass(snan) float @llvm.fptrunc.round.f32.f64(double nofpclass(snan) [[ARG0]], metadata !"round.downward") #[[ATTR2]]240; CHECK-NEXT:    ret float [[EXT]]241;242  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")243  ret float %ext244}245 246define float @ret_fptrunc_round_noinf(double nofpclass(inf) %arg0) {247; CHECK-LABEL: define float @ret_fptrunc_round_noinf248; CHECK-SAME: (double nofpclass(inf) [[ARG0:%.*]]) #[[ATTR1]] {249; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double nofpclass(inf) [[ARG0]], metadata !"round.downward") #[[ATTR2]]250; CHECK-NEXT:    ret float [[EXT]]251;252  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")253  ret float %ext254}255 256define float @ret_fptrunc_round_nopinf(double nofpclass(pinf) %arg0) {257; CHECK-LABEL: define float @ret_fptrunc_round_nopinf258; CHECK-SAME: (double nofpclass(pinf) [[ARG0:%.*]]) #[[ATTR1]] {259; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double nofpclass(pinf) [[ARG0]], metadata !"round.downward") #[[ATTR2]]260; CHECK-NEXT:    ret float [[EXT]]261;262  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")263  ret float %ext264}265 266define float @ret_fptrunc_round_noninf(double nofpclass(ninf) %arg0) {267; CHECK-LABEL: define float @ret_fptrunc_round_noninf268; CHECK-SAME: (double nofpclass(ninf) [[ARG0:%.*]]) #[[ATTR1]] {269; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double nofpclass(ninf) [[ARG0]], metadata !"round.downward") #[[ATTR2]]270; CHECK-NEXT:    ret float [[EXT]]271;272  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")273  ret float %ext274}275 276define float @ret_fptrunc_round_nozero(double nofpclass(zero) %arg0) {277; CHECK-LABEL: define float @ret_fptrunc_round_nozero278; CHECK-SAME: (double nofpclass(zero) [[ARG0:%.*]]) #[[ATTR1]] {279; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double nofpclass(zero) [[ARG0]], metadata !"round.downward") #[[ATTR2]]280; CHECK-NEXT:    ret float [[EXT]]281;282  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")283  ret float %ext284}285 286define float @ret_fptrunc_round_nopzero(double nofpclass(pzero) %arg0) {287; CHECK-LABEL: define float @ret_fptrunc_round_nopzero288; CHECK-SAME: (double nofpclass(pzero) [[ARG0:%.*]]) #[[ATTR1]] {289; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double nofpclass(pzero) [[ARG0]], metadata !"round.downward") #[[ATTR2]]290; CHECK-NEXT:    ret float [[EXT]]291;292  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")293  ret float %ext294}295 296define float @ret_fptrunc_round_nonzero(double nofpclass(nzero) %arg0) {297; CHECK-LABEL: define float @ret_fptrunc_round_nonzero298; CHECK-SAME: (double nofpclass(nzero) [[ARG0:%.*]]) #[[ATTR1]] {299; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double nofpclass(nzero) [[ARG0]], metadata !"round.downward") #[[ATTR2]]300; CHECK-NEXT:    ret float [[EXT]]301;302  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")303  ret float %ext304}305 306define float @ret_fptrunc_round_nonan_noinf(double nofpclass(nan inf) %arg0) {307; CHECK-LABEL: define nofpclass(nan) float @ret_fptrunc_round_nonan_noinf308; CHECK-SAME: (double nofpclass(nan inf) [[ARG0:%.*]]) #[[ATTR1]] {309; CHECK-NEXT:    [[EXT:%.*]] = call nofpclass(nan) float @llvm.fptrunc.round.f32.f64(double nofpclass(nan inf) [[ARG0]], metadata !"round.downward") #[[ATTR2]]310; CHECK-NEXT:    ret float [[EXT]]311;312  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")313  ret float %ext314}315 316define float @ret_fptrunc_round_nosub(double nofpclass(sub) %arg0) {317; CHECK-LABEL: define float @ret_fptrunc_round_nosub318; CHECK-SAME: (double nofpclass(sub) [[ARG0:%.*]]) #[[ATTR1]] {319; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double nofpclass(sub) [[ARG0]], metadata !"round.downward") #[[ATTR2]]320; CHECK-NEXT:    ret float [[EXT]]321;322  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")323  ret float %ext324}325 326define float @ret_fptrunc_round_nonorm(double nofpclass(norm) %arg0) {327; CHECK-LABEL: define float @ret_fptrunc_round_nonorm328; CHECK-SAME: (double nofpclass(norm) [[ARG0:%.*]]) #[[ATTR1]] {329; CHECK-NEXT:    [[EXT:%.*]] = call float @llvm.fptrunc.round.f32.f64(double nofpclass(norm) [[ARG0]], metadata !"round.downward") #[[ATTR2]]330; CHECK-NEXT:    ret float [[EXT]]331;332  %ext = call float @llvm.fptrunc.round.f32.f64(double %arg0, metadata !"round.downward")333  ret float %ext334}335 336;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:337; TUNIT: {{.*}}338