1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 2; RUN: opt < %s -passes=instcombine -S | FileCheck %s 3 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 0x4000A2B240000000 8; 9 %r = call float @log1pf(float 7.000000e+00) 10 ret float %r 11} 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 0x4000A2B23F3BAB73 17; 18 %r = call double @log1p(double 7.000000e+00) 19 ret double %r 20} 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 %r 29} 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 %r 38} 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) readnone 46 ret float %r 47} 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) readnone 55 ret double %r 56} 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+00 62; 63 %r = call float @log1pf(float 0.000000e+00) 64 ret float %r 65} 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+00 71; 72 %r = call double @log1p(double 0.000000e+00) 73 ret double %r 74} 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+00 80; 81 %r = call float @log1pf(float -0.000000e+00) 82 ret float %r 83} 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+00 89; 90 %r = call double @log1p(double -0.000000e+00) 91 ret double %r 92} 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 %r 101} 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 %r 110} 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) readnone 118 ret float %r 119} 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) readnone 127 ret double %r 128} 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 0xBFE62E4300000000 134; 135 %r = call float @log1pf(float -5.000000e-01) 136 ret float %r 137} 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 0xBFE62E42FEFA39EF 143; 144 %r = call double @log1p(double -5.000000e-01) 145 ret double %r 146} 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 %r 155} 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 %r 164} 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) readnone 172 ret float %r 173} 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) readnone 181 ret double %r 182} 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 %r 191} 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 %r 200} 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) readnone 208 ret float %r 209} 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) readnone 217 ret double %r 218} 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 %r 227} 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 %r 236} 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) readnone 244 ret float %r 245} 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) readnone 253 ret double %r 254} 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 %r 263} 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 %r 272} 273 274declare float @log1pf(float) 275declare double @log1p(double) 276