276 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define float @log1pf_const() {5; CHECK-LABEL: define float @log1pf_const() {6; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float 7.000000e+00)7; CHECK-NEXT: ret float 0x4000A2B2400000008;9 %r = call float @log1pf(float 7.000000e+00)10 ret float %r11}12 13define double @log1p_const() {14; CHECK-LABEL: define double @log1p_const() {15; CHECK-NEXT: [[R:%.*]] = call double @log1p(double 7.000000e+00)16; CHECK-NEXT: ret double 0x4000A2B23F3BAB7317;18 %r = call double @log1p(double 7.000000e+00)19 ret double %r20}21 22define float @log1pf_minus_one() {23; CHECK-LABEL: define float @log1pf_minus_one() {24; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float -1.000000e+00)25; CHECK-NEXT: ret float [[R]]26;27 %r = call float @log1pf(float -1.000000e+00)28 ret float %r29}30 31define double @log1p_minus_one() {32; CHECK-LABEL: define double @log1p_minus_one() {33; CHECK-NEXT: [[R:%.*]] = call double @log1p(double -1.000000e+00)34; CHECK-NEXT: ret double [[R]]35;36 %r = call double @log1p(double -1.000000e+00)37 ret double %r38}39 40define float @log1pf_minus_one_memory_none() {41; CHECK-LABEL: define float @log1pf_minus_one_memory_none() {42; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float -1.000000e+00) #[[ATTR0:[0-9]+]]43; CHECK-NEXT: ret float [[R]]44;45 %r = call float @log1pf(float -1.000000e+00) readnone46 ret float %r47}48 49define double @log1p_minus_one_memory_none() {50; CHECK-LABEL: define double @log1p_minus_one_memory_none() {51; CHECK-NEXT: [[R:%.*]] = call double @log1p(double -1.000000e+00) #[[ATTR0]]52; CHECK-NEXT: ret double [[R]]53;54 %r = call double @log1p(double -1.000000e+00) readnone55 ret double %r56}57 58define float @log1pf_zero() {59; CHECK-LABEL: define float @log1pf_zero() {60; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float 0.000000e+00)61; CHECK-NEXT: ret float 0.000000e+0062;63 %r = call float @log1pf(float 0.000000e+00)64 ret float %r65}66 67define double @log1p_zero() {68; CHECK-LABEL: define double @log1p_zero() {69; CHECK-NEXT: [[R:%.*]] = call double @log1p(double 0.000000e+00)70; CHECK-NEXT: ret double 0.000000e+0071;72 %r = call double @log1p(double 0.000000e+00)73 ret double %r74}75 76define float @log1pf_neg_zero() {77; CHECK-LABEL: define float @log1pf_neg_zero() {78; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float -0.000000e+00)79; CHECK-NEXT: ret float -0.000000e+0080;81 %r = call float @log1pf(float -0.000000e+00)82 ret float %r83}84 85define double @log1p_neg_zero() {86; CHECK-LABEL: define double @log1p_neg_zero() {87; CHECK-NEXT: [[R:%.*]] = call double @log1p(double -0.000000e+00)88; CHECK-NEXT: ret double -0.000000e+0089;90 %r = call double @log1p(double -0.000000e+00)91 ret double %r92}93 94define float @log1pf_neg1() {95; CHECK-LABEL: define float @log1pf_neg1() {96; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float -7.000000e+00)97; CHECK-NEXT: ret float [[R]]98;99 %r = call float @log1pf(float -7.000000e+00)100 ret float %r101}102 103define double @log1p_neg1() {104; CHECK-LABEL: define double @log1p_neg1() {105; CHECK-NEXT: [[R:%.*]] = call double @log1p(double -7.000000e+00)106; CHECK-NEXT: ret double [[R]]107;108 %r = call double @log1p(double -7.000000e+00)109 ret double %r110}111 112define float @log1pf_neg1_memory_none() {113; CHECK-LABEL: define float @log1pf_neg1_memory_none() {114; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float -7.000000e+00) #[[ATTR0]]115; CHECK-NEXT: ret float [[R]]116;117 %r = call float @log1pf(float -7.000000e+00) readnone118 ret float %r119}120 121define double @log1p_neg1_memory_none() {122; CHECK-LABEL: define double @log1p_neg1_memory_none() {123; CHECK-NEXT: [[R:%.*]] = call double @log1p(double -7.000000e+00) #[[ATTR0]]124; CHECK-NEXT: ret double [[R]]125;126 %r = call double @log1p(double -7.000000e+00) readnone127 ret double %r128}129 130define float @log1pf_neg2() {131; CHECK-LABEL: define float @log1pf_neg2() {132; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float -5.000000e-01)133; CHECK-NEXT: ret float 0xBFE62E4300000000134;135 %r = call float @log1pf(float -5.000000e-01)136 ret float %r137}138 139define double @log1p_neg2() {140; CHECK-LABEL: define double @log1p_neg2() {141; CHECK-NEXT: [[R:%.*]] = call double @log1p(double -5.000000e-01)142; CHECK-NEXT: ret double 0xBFE62E42FEFA39EF143;144 %r = call double @log1p(double -5.000000e-01)145 ret double %r146}147 148define float @log1pf_inf() {149; CHECK-LABEL: define float @log1pf_inf() {150; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float 0x7FF0000000000000)151; CHECK-NEXT: ret float [[R]]152;153 %r = call float @log1pf(float 0x7FF0000000000000)154 ret float %r155}156 157define double @log1p_inf() {158; CHECK-LABEL: define double @log1p_inf() {159; CHECK-NEXT: [[R:%.*]] = call double @log1p(double 0x7FF0000000000000)160; CHECK-NEXT: ret double [[R]]161;162 %r = call double @log1p(double 0x7FF0000000000000)163 ret double %r164}165 166define float @log1pf_inf_memory_none() {167; CHECK-LABEL: define float @log1pf_inf_memory_none() {168; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float 0x7FF0000000000000) #[[ATTR0]]169; CHECK-NEXT: ret float [[R]]170;171 %r = call float @log1pf(float 0x7FF0000000000000) readnone172 ret float %r173}174 175define double @log1p_inf_memory_none() {176; CHECK-LABEL: define double @log1p_inf_memory_none() {177; CHECK-NEXT: [[R:%.*]] = call double @log1p(double 0x7FF0000000000000) #[[ATTR0]]178; CHECK-NEXT: ret double [[R]]179;180 %r = call double @log1p(double 0x7FF0000000000000) readnone181 ret double %r182}183 184define float @log1pf_neg_inf() {185; CHECK-LABEL: define float @log1pf_neg_inf() {186; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float 0xFFF0000000000000)187; CHECK-NEXT: ret float [[R]]188;189 %r = call float @log1pf(float 0xFFF0000000000000)190 ret float %r191}192 193define double @log1p_neg_inf() {194; CHECK-LABEL: define double @log1p_neg_inf() {195; CHECK-NEXT: [[R:%.*]] = call double @log1p(double 0xFFF0000000000000)196; CHECK-NEXT: ret double [[R]]197;198 %r = call double @log1p(double 0xFFF0000000000000)199 ret double %r200}201 202define float @log1pf_neg_inf_memory_none() {203; CHECK-LABEL: define float @log1pf_neg_inf_memory_none() {204; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float 0xFFF0000000000000) #[[ATTR0]]205; CHECK-NEXT: ret float [[R]]206;207 %r = call float @log1pf(float 0xFFF0000000000000) readnone208 ret float %r209}210 211define double @log1p_neg_inf_memory_none() {212; CHECK-LABEL: define double @log1p_neg_inf_memory_none() {213; CHECK-NEXT: [[R:%.*]] = call double @log1p(double 0xFFF0000000000000) #[[ATTR0]]214; CHECK-NEXT: ret double [[R]]215;216 %r = call double @log1p(double 0xFFF0000000000000) readnone217 ret double %r218}219 220define float @log1pf_nan() {221; CHECK-LABEL: define float @log1pf_nan() {222; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float 0x7FF8000000000000)223; CHECK-NEXT: ret float [[R]]224;225 %r = call float @log1pf(float 0x7FF8000000000000)226 ret float %r227}228 229define double @log1p_nan() {230; CHECK-LABEL: define double @log1p_nan() {231; CHECK-NEXT: [[R:%.*]] = call double @log1p(double 0x7FF8000000000000)232; CHECK-NEXT: ret double [[R]]233;234 %r = call double @log1p(double 0x7FF8000000000000)235 ret double %r236}237 238define float @log1pf_nan_memory_none() {239; CHECK-LABEL: define float @log1pf_nan_memory_none() {240; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float 0x7FF8000000000000) #[[ATTR0]]241; CHECK-NEXT: ret float [[R]]242;243 %r = call float @log1pf(float 0x7FF8000000000000) readnone244 ret float %r245}246 247define double @log1p_nan_memory_none() {248; CHECK-LABEL: define double @log1p_nan_memory_none() {249; CHECK-NEXT: [[R:%.*]] = call double @log1p(double 0x7FF8000000000000) #[[ATTR0]]250; CHECK-NEXT: ret double [[R]]251;252 %r = call double @log1p(double 0x7FF8000000000000) readnone253 ret double %r254}255 256define float @log1pf_poison() {257; CHECK-LABEL: define float @log1pf_poison() {258; CHECK-NEXT: [[R:%.*]] = call float @log1pf(float poison)259; CHECK-NEXT: ret float [[R]]260;261 %r = call float @log1pf(float poison)262 ret float %r263}264 265define double @log1p_poison() {266; CHECK-LABEL: define double @log1p_poison() {267; CHECK-NEXT: [[R:%.*]] = call double @log1p(double poison)268; CHECK-NEXT: ret double [[R]]269;270 %r = call double @log1p(double poison)271 ret double %r272}273 274declare float @log1pf(float)275declare double @log1p(double)276