|  | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | 
|  | ; RUN: opt -early-cse -S -o - %s | FileCheck %s | 
|  |  | 
|  | declare double @acos(double) | 
|  | define double @f_acos() { | 
|  | ; CHECK-LABEL: @f_acos( | 
|  | ; CHECK-NEXT:    ret double 0.000000e+00 | 
|  | ; | 
|  | %res = tail call fast double @acos(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | declare float @asinf(float) | 
|  | define float @f_asinf() { | 
|  | ; CHECK-LABEL: @f_asinf( | 
|  | ; CHECK-NEXT:    ret float 0x3FF921FB{{.+}} | 
|  | ; | 
|  | %res = tail call fast float @asinf(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare double @atan(double) | 
|  | define double @f_atan() { | 
|  | ; CHECK-LABEL: @f_atan( | 
|  | ; CHECK-NEXT:    [[RES:%.*]] = tail call fast double @atan(double 1.000000e+00) | 
|  | ; CHECK-NEXT:    ret double 0x3FE921FB | 
|  | ; | 
|  | %res = tail call fast double @atan(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | declare float @cosf(float) | 
|  | define float @f_cosf() { | 
|  | ; CHECK-LABEL: @f_cosf( | 
|  | ; CHECK-NEXT:    ret float 0x3FE14A2{{.+}} | 
|  | ; | 
|  | %res = tail call fast float @cosf(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare float @llvm.cos.f32(float) | 
|  | define float @i_cosf() { | 
|  | ; CHECK-LABEL: @i_cosf( | 
|  | ; CHECK-NEXT:    ret float 0x3FE14A2 | 
|  | ; | 
|  | %res = tail call fast float @llvm.cos.f32(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare double @cosh(double) | 
|  | define double @f_cosh() { | 
|  | ; CHECK-LABEL: @f_cosh( | 
|  | ; CHECK-NEXT:    ret double 0x3FF8B075{{.+}} | 
|  | ; | 
|  | %res = tail call fast double @cosh(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | declare float @expf(float) | 
|  | define float @f_expf() { | 
|  | ; CHECK-LABEL: @f_expf( | 
|  | ; CHECK-NEXT:    ret float 0x4005BF0A{{.+}} | 
|  | ; | 
|  | %res = tail call fast float @expf(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare float @llvm.exp.f32(float) | 
|  | define float @i_expf() { | 
|  | ; CHECK-LABEL: @i_expf( | 
|  | ; CHECK-NEXT:    ret float 0x4005BF0A{{.+}} | 
|  | ; | 
|  | %res = tail call fast float @llvm.exp.f32(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare double @exp2(double) | 
|  | define double @f_exp2() { | 
|  | ; CHECK-LABEL: @f_exp2( | 
|  | ; CHECK-NEXT:    ret double 2.000000e+00 | 
|  | ; | 
|  | %res = tail call fast double @exp2(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | declare double @llvm.exp2.f64(double) | 
|  | define double @i_exp2() { | 
|  | ; CHECK-LABEL: @i_exp2( | 
|  | ; CHECK-NEXT:    ret double 2.000000e+00 | 
|  | ; | 
|  | %res = tail call fast double @llvm.exp2.f64(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | ; FIXME: exp10() is not widely supported. | 
|  | declare float @exp10f(float) | 
|  | define float @f_exp10f() { | 
|  | ; CHECK-LABEL: @f_exp10f( | 
|  | ; CHECK-NEXT:    [[RES:%.*]] = tail call float @exp10f(float 1.000000e+00) | 
|  | ; CHECK-NEXT:    ret float [[RES]] | 
|  | ; | 
|  | %res = tail call float @exp10f(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare double @log(double) | 
|  | define double @f_log() { | 
|  | ; CHECK-LABEL: @f_log( | 
|  | ; CHECK-NEXT:    ret double 0.000000e+00 | 
|  | ; | 
|  | %res = tail call fast double @log(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | declare double @llvm.log.f64(double) | 
|  | define double @i_log() { | 
|  | ; CHECK-LABEL: @i_log( | 
|  | ; CHECK-NEXT:    ret double 0.000000e+00 | 
|  | ; | 
|  | %res = tail call fast double @llvm.log.f64(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | declare float @log2f(float) | 
|  | define float @f_log2f() { | 
|  | ; CHECK-LABEL: @f_log2f( | 
|  | ; CHECK-NEXT:    ret float 0.000000e+00 | 
|  | ; | 
|  | %res = tail call fast float @log2f(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare float @llvm.log2.f32(float) | 
|  | define float @i_log2f() { | 
|  | ; CHECK-LABEL: @i_log2f( | 
|  | ; CHECK-NEXT:    ret float 0.000000e+00 | 
|  | ; | 
|  | %res = tail call fast float @llvm.log2.f32(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare double @log10(double) | 
|  | define double @f_log10() { | 
|  | ; CHECK-LABEL: @f_log10( | 
|  | ; CHECK-NEXT:    ret double 0.000000e+00 | 
|  | ; | 
|  | %res = tail call fast double @log10(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | declare float @sinf(float) | 
|  | define float @f_sinf() { | 
|  | ; CHECK-LABEL: @f_sinf( | 
|  | ; CHECK-NEXT:    ret float 0x3FEAED54{{.+}} | 
|  | ; | 
|  | %res = tail call fast float @sinf(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare double @sinh(double) | 
|  | define double @f_sinh() { | 
|  | ; CHECK-LABEL: @f_sinh( | 
|  | ; CHECK-NEXT:    ret double 0x3FF2CD9F{{.+}} | 
|  | ; | 
|  | %res = tail call fast double @sinh(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | declare float @sqrtf(float) | 
|  | define float @f_sqrtf() { | 
|  | ; CHECK-LABEL: @f_sqrtf( | 
|  | ; CHECK-NEXT:    ret float 1.000000e+00 | 
|  | ; | 
|  | %res = tail call fast float @sqrtf(float 1.0) | 
|  | ret float %res | 
|  | } | 
|  |  | 
|  | declare double @tan(double) | 
|  | define double @f_tan() { | 
|  | ; CHECK-LABEL: @f_tan( | 
|  | ; CHECK-NEXT:    ret double 0x3FF8EB24{{.+}} | 
|  | ; | 
|  | %res = tail call fast double @tan(double 1.0) | 
|  | ret double %res | 
|  | } | 
|  |  | 
|  | declare float @tanhf(float) | 
|  | define float @f_tanhf() { | 
|  | ; CHECK-LABEL: @f_tanhf( | 
|  | ; CHECK-NEXT:    [[RES:%.*]] = tail call fast float @tanhf(float 1.000000e+00) | 
|  | ; CHECK-NEXT:    ret float 0x3FE85EFA{{.+}} | 
|  | ; | 
|  | %res = tail call fast float @tanhf(float 1.0) | 
|  | ret float %res | 
|  | } |