1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -passes=early-cse -earlycse-debug-hash -S -o - %s | FileCheck %s 3 4declare double @acos(double) #0 5define double @f_acos() { 6; CHECK-LABEL: @f_acos( 7; CHECK-NEXT: ret double 0.000000e+00 8; 9 %res = tail call fast double @acos(double 1.0) 10 ret double %res 11} 12 13declare float @asinf(float) #0 14define float @f_asinf() { 15; CHECK-LABEL: @f_asinf( 16; CHECK-NEXT: ret float 0x3FF921FB{{.+}} 17; 18 %res = tail call fast float @asinf(float 1.0) 19 ret float %res 20} 21 22declare double @atan(double) #0 23define double @f_atan() { 24; CHECK-LABEL: @f_atan( 25; CHECK-NEXT: ret double 0x3FE921FB 26; 27 %res = tail call fast double @atan(double 1.0) 28 ret double %res 29} 30 31declare float @cosf(float) #0 32define float @f_cosf() { 33; CHECK-LABEL: @f_cosf( 34; CHECK-NEXT: ret float 0x3FE14A2{{.+}} 35; 36 %res = tail call fast float @cosf(float 1.0) 37 ret float %res 38} 39 40declare float @llvm.cos.f32(float) 41define float @i_cosf() { 42; CHECK-LABEL: @i_cosf( 43; CHECK-NEXT: ret float 0x3FE14A2 44; 45 %res = tail call fast float @llvm.cos.f32(float 1.0) 46 ret float %res 47} 48 49declare double @cosh(double) #0 50define double @f_cosh() { 51; CHECK-LABEL: @f_cosh( 52; CHECK-NEXT: ret double 0x3FF8B075{{.+}} 53; 54 %res = tail call fast double @cosh(double 1.0) 55 ret double %res 56} 57 58declare float @expf(float) #0 59define float @f_expf() { 60; CHECK-LABEL: @f_expf( 61; CHECK-NEXT: ret float 0x4005BF0A{{.+}} 62; 63 %res = tail call fast float @expf(float 1.0) 64 ret float %res 65} 66 67declare float @llvm.exp.f32(float) 68define float @i_expf() { 69; CHECK-LABEL: @i_expf( 70; CHECK-NEXT: ret float 0x4005BF0A{{.+}} 71; 72 %res = tail call fast float @llvm.exp.f32(float 1.0) 73 ret float %res 74} 75 76declare double @exp2(double) #0 77define double @f_exp2() { 78; CHECK-LABEL: @f_exp2( 79; CHECK-NEXT: ret double 2.000000e+00 80; 81 %res = tail call fast double @exp2(double 1.0) 82 ret double %res 83} 84 85declare double @llvm.exp2.f64(double) 86define double @i_exp2() { 87; CHECK-LABEL: @i_exp2( 88; CHECK-NEXT: ret double 2.000000e+00 89; 90 %res = tail call fast double @llvm.exp2.f64(double 1.0) 91 ret double %res 92} 93 94; FIXME: exp10() is not widely supported. 95declare float @exp10f(float) #0 96define float @f_exp10f() { 97; CHECK-LABEL: @f_exp10f( 98; CHECK-NEXT: [[RES:%.*]] = tail call float @exp10f(float 1.000000e+00) 99; CHECK-NEXT: ret float [[RES]] 100; 101 %res = tail call float @exp10f(float 1.0) 102 ret float %res 103} 104 105declare double @log(double) #0 106define double @f_log() { 107; CHECK-LABEL: @f_log( 108; CHECK-NEXT: ret double 0.000000e+00 109; 110 %res = tail call fast double @log(double 1.0) 111 ret double %res 112} 113 114declare double @llvm.log.f64(double) 115define double @i_log() { 116; CHECK-LABEL: @i_log( 117; CHECK-NEXT: ret double 0.000000e+00 118; 119 %res = tail call fast double @llvm.log.f64(double 1.0) 120 ret double %res 121} 122 123declare float @log2f(float) #0 124define float @f_log2f() { 125; CHECK-LABEL: @f_log2f( 126; CHECK-NEXT: ret float 0.000000e+00 127; 128 %res = tail call fast float @log2f(float 1.0) 129 ret float %res 130} 131 132declare float @llvm.log2.f32(float) 133define float @i_log2f() { 134; CHECK-LABEL: @i_log2f( 135; CHECK-NEXT: ret float 0.000000e+00 136; 137 %res = tail call fast float @llvm.log2.f32(float 1.0) 138 ret float %res 139} 140 141declare double @log10(double) #0 142define double @f_log10() { 143; CHECK-LABEL: @f_log10( 144; CHECK-NEXT: ret double 0.000000e+00 145; 146 %res = tail call fast double @log10(double 1.0) 147 ret double %res 148} 149 150declare float @sinf(float) #0 151define float @f_sinf() { 152; CHECK-LABEL: @f_sinf( 153; CHECK-NEXT: ret float 0x3FEAED54{{.+}} 154; 155 %res = tail call fast float @sinf(float 1.0) 156 ret float %res 157} 158 159declare double @sinh(double) #0 160define double @f_sinh() { 161; CHECK-LABEL: @f_sinh( 162; CHECK-NEXT: ret double 0x3FF2CD9F{{.+}} 163; 164 %res = tail call fast double @sinh(double 1.0) 165 ret double %res 166} 167 168declare float @sqrtf(float) #0 169define float @f_sqrtf() { 170; CHECK-LABEL: @f_sqrtf( 171; CHECK-NEXT: ret float 1.000000e+00 172; 173 %res = tail call fast float @sqrtf(float 1.0) 174 ret float %res 175} 176 177declare double @tan(double) #0 178define double @f_tan() { 179; CHECK-LABEL: @f_tan( 180; CHECK-NEXT: ret double 0x3FF8EB24{{.+}} 181; 182 %res = tail call fast double @tan(double 1.0) 183 ret double %res 184} 185 186declare float @tanhf(float) #0 187define float @f_tanhf() { 188; CHECK-LABEL: @f_tanhf( 189; CHECK-NEXT: [[RES:%.*]] = tail call fast float @tanhf(float 1.000000e+00) 190; CHECK-NEXT: ret float 0x3FE85EFA{{.+}} 191; 192 %res = tail call fast float @tanhf(float 1.0) 193 ret float %res 194} 195 196attributes #0 = { nofree nounwind willreturn } 197