brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.5 KiB · b083b70 Raw
296 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.copysign.f32(float, float)5declare float @llvm.fabs.f32(float)6 7define float @ret_copysign(float %arg0, float %arg1) {8; CHECK-LABEL: define float @ret_copysign9; CHECK-SAME: (float [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1:[0-9]+]] {10; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float [[ARG0]], float [[ARG1]]) #[[ATTR2:[0-9]+]]11; CHECK-NEXT:    ret float [[CALL]]12;13  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)14  ret float %call15}16 17define float @ret_copysign_fabs_rhs(float %arg0, float %arg1) {18; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_copysign_fabs_rhs19; CHECK-SAME: (float [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {20; CHECK-NEXT:    [[FABS_ARG1:%.*]] = call float @llvm.fabs.f32(float [[ARG1]]) #[[ATTR2]]21; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(ninf nzero nsub nnorm) float @llvm.copysign.f32(float [[ARG0]], float [[FABS_ARG1]]) #[[ATTR2]]22; CHECK-NEXT:    ret float [[CALL]]23;24  %fabs.arg1 = call float @llvm.fabs.f32(float %arg1)25  %call = call float @llvm.copysign.f32(float %arg0, float %fabs.arg1)26  ret float %call27}28 29define float @ret_copysign_nnan_lhs_fabs_rhs(float nofpclass(nan) %arg0, float %arg1) {30; CHECK-LABEL: define nofpclass(nan ninf nzero nsub nnorm) float @ret_copysign_nnan_lhs_fabs_rhs31; CHECK-SAME: (float nofpclass(nan) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {32; CHECK-NEXT:    [[FABS_ARG1:%.*]] = call float @llvm.fabs.f32(float [[ARG1]]) #[[ATTR2]]33; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan ninf nzero nsub nnorm) float @llvm.copysign.f32(float nofpclass(nan) [[ARG0]], float [[FABS_ARG1]]) #[[ATTR2]]34; CHECK-NEXT:    ret float [[CALL]]35;36  %fabs.arg1 = call float @llvm.fabs.f32(float %arg1)37  %call = call float @llvm.copysign.f32(float %arg0, float %fabs.arg1)38  ret float %call39}40 41 42define float @ret_copysign_lhs_fabs_nnan_rhs(float %arg0, float %arg1) {43; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_copysign_lhs_fabs_nnan_rhs44; CHECK-SAME: (float [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {45; CHECK-NEXT:    [[FABS_ARG1:%.*]] = call nnan float @llvm.fabs.f32(float [[ARG1]]) #[[ATTR2]]46; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(ninf nzero nsub nnorm) float @llvm.copysign.f32(float [[ARG0]], float [[FABS_ARG1]]) #[[ATTR2]]47; CHECK-NEXT:    ret float [[CALL]]48;49  %fabs.arg1 = call nnan float @llvm.fabs.f32(float %arg1)50  %call = call float @llvm.copysign.f32(float %arg0, float %fabs.arg1)51  ret float %call52}53 54 55define float @ret_copysign_noneg_lhs(float nofpclass(ninf nnorm nsub nzero) %arg0, float %arg1) {56; CHECK-LABEL: define float @ret_copysign_noneg_lhs57; CHECK-SAME: (float nofpclass(ninf nzero nsub nnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {58; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(ninf nzero nsub nnorm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]59; CHECK-NEXT:    ret float [[CALL]]60;61  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)62  ret float %call63}64 65define float @ret_copysign_noneg_rhs(float %arg0, float nofpclass(ninf nnorm nsub nzero) %arg1) {66; CHECK-LABEL: define float @ret_copysign_noneg_rhs67; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(ninf nzero nsub nnorm) [[ARG1:%.*]]) #[[ATTR1]] {68; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float [[ARG0]], float nofpclass(ninf nzero nsub nnorm) [[ARG1]]) #[[ATTR2]]69; CHECK-NEXT:    ret float [[CALL]]70;71  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)72  ret float %call73}74 75define float @ret_copysign_noneg_nonan_rhs(float %arg0, float nofpclass(ninf nnorm nsub nzero nan) %arg1) {76; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_copysign_noneg_nonan_rhs77; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(nan ninf nzero nsub nnorm) [[ARG1:%.*]]) #[[ATTR1]] {78; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(ninf nzero nsub nnorm) float @llvm.copysign.f32(float [[ARG0]], float nofpclass(nan ninf nzero nsub nnorm) [[ARG1]]) #[[ATTR2]]79; CHECK-NEXT:    ret float [[CALL]]80;81  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)82  ret float %call83}84 85define float @ret_copysign_nopos_lhs(float nofpclass(pinf pnorm psub pzero) %arg0, float %arg1) {86; CHECK-LABEL: define float @ret_copysign_nopos_lhs87; CHECK-SAME: (float nofpclass(pinf pzero psub pnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {88; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(pinf pzero psub pnorm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]89; CHECK-NEXT:    ret float [[CALL]]90;91  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)92  ret float %call93}94 95define float @ret_copysign_nopos_rhs(float %arg0, float nofpclass(pinf pnorm psub pzero) %arg1) {96; CHECK-LABEL: define float @ret_copysign_nopos_rhs97; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(pinf pzero psub pnorm) [[ARG1:%.*]]) #[[ATTR1]] {98; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float [[ARG0]], float nofpclass(pinf pzero psub pnorm) [[ARG1]]) #[[ATTR2]]99; CHECK-NEXT:    ret float [[CALL]]100;101  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)102  ret float %call103}104 105define float @ret_copysign_nonan_lhs(float nofpclass(nan) %arg0, float %arg1) {106; CHECK-LABEL: define nofpclass(nan) float @ret_copysign_nonan_lhs107; CHECK-SAME: (float nofpclass(nan) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {108; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan) float @llvm.copysign.f32(float nofpclass(nan) [[ARG0]], float [[ARG1]]) #[[ATTR2]]109; CHECK-NEXT:    ret float [[CALL]]110;111  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)112  ret float %call113}114 115define float @ret_copysign_nonan_rhs(float %arg0, float nofpclass(nan) %arg1) {116; CHECK-LABEL: define float @ret_copysign_nonan_rhs117; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(nan) [[ARG1:%.*]]) #[[ATTR1]] {118; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float [[ARG0]], float nofpclass(nan) [[ARG1]]) #[[ATTR2]]119; CHECK-NEXT:    ret float [[CALL]]120;121  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)122  ret float %call123}124 125define float @ret_copysign_noneg_nonan_lhs(float nofpclass(ninf nnorm nsub nzero nan) %arg0, float %arg1) {126; CHECK-LABEL: define nofpclass(nan) float @ret_copysign_noneg_nonan_lhs127; CHECK-SAME: (float nofpclass(nan ninf nzero nsub nnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {128; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan) float @llvm.copysign.f32(float nofpclass(nan ninf nzero nsub nnorm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]129; CHECK-NEXT:    ret float [[CALL]]130;131  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)132  ret float %call133}134 135define float @ret_copysign_nopos_nonan_lhs(float nofpclass(pinf pnorm psub pzero nan) %arg0, float %arg1) {136; CHECK-LABEL: define nofpclass(nan) float @ret_copysign_nopos_nonan_lhs137; CHECK-SAME: (float nofpclass(nan pinf pzero psub pnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {138; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan) float @llvm.copysign.f32(float nofpclass(nan pinf pzero psub pnorm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]139; CHECK-NEXT:    ret float [[CALL]]140;141  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)142  ret float %call143}144 145define float @ret_copysign_mixed_lhs0(float nofpclass(ninf pnorm nsub nzero) %arg0, float %arg1) {146; CHECK-LABEL: define float @ret_copysign_mixed_lhs0147; CHECK-SAME: (float nofpclass(ninf nzero nsub pnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {148; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(ninf nzero nsub pnorm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]149; CHECK-NEXT:    ret float [[CALL]]150;151  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)152  ret float %call153}154 155define float @ret_copysign_mixed_lhs1(float nofpclass(pinf nnorm psub pzero) %arg0, float %arg1) {156; CHECK-LABEL: define float @ret_copysign_mixed_lhs1157; CHECK-SAME: (float nofpclass(pinf pzero psub nnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {158; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(pinf pzero psub nnorm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]159; CHECK-NEXT:    ret float [[CALL]]160;161  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)162  ret float %call163}164 165define float @ret_copysign_mixed_lhs2(float nofpclass(ninf pnorm psub nzero qnan) %arg0, float %arg1) {166; CHECK-LABEL: define nofpclass(qnan) float @ret_copysign_mixed_lhs2167; CHECK-SAME: (float nofpclass(qnan ninf nzero psub pnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {168; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(qnan) float @llvm.copysign.f32(float nofpclass(qnan ninf nzero psub pnorm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]169; CHECK-NEXT:    ret float [[CALL]]170;171  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)172  ret float %call173}174 175define float @ret_copysign_noninf_lhs(float nofpclass(ninf) %arg0, float %arg1) {176; CHECK-LABEL: define float @ret_copysign_noninf_lhs177; CHECK-SAME: (float nofpclass(ninf) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {178; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(ninf) [[ARG0]], float [[ARG1]]) #[[ATTR2]]179; CHECK-NEXT:    ret float [[CALL]]180;181  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)182  ret float %call183}184 185define float @ret_copysign_nopinf_lhs(float nofpclass(pinf) %arg0, float %arg1) {186; CHECK-LABEL: define float @ret_copysign_nopinf_lhs187; CHECK-SAME: (float nofpclass(pinf) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {188; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(pinf) [[ARG0]], float [[ARG1]]) #[[ATTR2]]189; CHECK-NEXT:    ret float [[CALL]]190;191  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)192  ret float %call193}194 195define float @ret_copysign_noinf_lhs(float nofpclass(inf) %arg0, float %arg1) {196; CHECK-LABEL: define nofpclass(inf) float @ret_copysign_noinf_lhs197; CHECK-SAME: (float nofpclass(inf) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {198; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(inf) float @llvm.copysign.f32(float nofpclass(inf) [[ARG0]], float [[ARG1]]) #[[ATTR2]]199; CHECK-NEXT:    ret float [[CALL]]200;201  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)202  ret float %call203}204 205define float @ret_copysign_nonzero_lhs(float nofpclass(nzero) %arg0, float %arg1) {206; CHECK-LABEL: define float @ret_copysign_nonzero_lhs207; CHECK-SAME: (float nofpclass(nzero) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {208; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(nzero) [[ARG0]], float [[ARG1]]) #[[ATTR2]]209; CHECK-NEXT:    ret float [[CALL]]210;211  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)212  ret float %call213}214 215define float @ret_copysign_nopzero_lhs(float nofpclass(pzero) %arg0, float %arg1) {216; CHECK-LABEL: define float @ret_copysign_nopzero_lhs217; CHECK-SAME: (float nofpclass(pzero) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {218; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(pzero) [[ARG0]], float [[ARG1]]) #[[ATTR2]]219; CHECK-NEXT:    ret float [[CALL]]220;221  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)222  ret float %call223}224 225define float @ret_copysign_nozero_lhs(float nofpclass(zero) %arg0, float %arg1) {226; CHECK-LABEL: define nofpclass(zero) float @ret_copysign_nozero_lhs227; CHECK-SAME: (float nofpclass(zero) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {228; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(zero) float @llvm.copysign.f32(float nofpclass(zero) [[ARG0]], float [[ARG1]]) #[[ATTR2]]229; CHECK-NEXT:    ret float [[CALL]]230;231  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)232  ret float %call233}234 235define float @ret_copysign_nonsub_lhs(float nofpclass(nsub) %arg0, float %arg1) {236; CHECK-LABEL: define float @ret_copysign_nonsub_lhs237; CHECK-SAME: (float nofpclass(nsub) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {238; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(nsub) [[ARG0]], float [[ARG1]]) #[[ATTR2]]239; CHECK-NEXT:    ret float [[CALL]]240;241  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)242  ret float %call243}244 245define float @ret_copysign_nopsub_lhs(float nofpclass(psub) %arg0, float %arg1) {246; CHECK-LABEL: define float @ret_copysign_nopsub_lhs247; CHECK-SAME: (float nofpclass(psub) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {248; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(psub) [[ARG0]], float [[ARG1]]) #[[ATTR2]]249; CHECK-NEXT:    ret float [[CALL]]250;251  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)252  ret float %call253}254 255define float @ret_copysign_nosub_lhs(float nofpclass(sub) %arg0, float %arg1) {256; CHECK-LABEL: define nofpclass(sub) float @ret_copysign_nosub_lhs257; CHECK-SAME: (float nofpclass(sub) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {258; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.copysign.f32(float nofpclass(sub) [[ARG0]], float [[ARG1]]) #[[ATTR2]]259; CHECK-NEXT:    ret float [[CALL]]260;261  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)262  ret float %call263}264 265define float @ret_copysign_nonnorm_lhs(float nofpclass(nnorm) %arg0, float %arg1) {266; CHECK-LABEL: define float @ret_copysign_nonnorm_lhs267; CHECK-SAME: (float nofpclass(nnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {268; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(nnorm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]269; CHECK-NEXT:    ret float [[CALL]]270;271  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)272  ret float %call273}274 275define float @ret_copysign_nopnorm_lhs(float nofpclass(pnorm) %arg0, float %arg1) {276; CHECK-LABEL: define float @ret_copysign_nopnorm_lhs277; CHECK-SAME: (float nofpclass(pnorm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {278; CHECK-NEXT:    [[CALL:%.*]] = call float @llvm.copysign.f32(float nofpclass(pnorm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]279; CHECK-NEXT:    ret float [[CALL]]280;281  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)282  ret float %call283}284 285define float @ret_copysign_nonorm_lhs(float nofpclass(norm) %arg0, float %arg1) {286; CHECK-LABEL: define nofpclass(norm) float @ret_copysign_nonorm_lhs287; CHECK-SAME: (float nofpclass(norm) [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1]] {288; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(norm) float @llvm.copysign.f32(float nofpclass(norm) [[ARG0]], float [[ARG1]]) #[[ATTR2]]289; CHECK-NEXT:    ret float [[CALL]]290;291  %call = call float @llvm.copysign.f32(float %arg0, float %arg1)292  ret float %call293}294;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:295; TUNIT: {{.*}}296