2019-09-07 03:41:49 +08:00
|
|
|
; 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
|
|
|
|
}
|
|
|
|
|
2019-10-01 04:53:23 +08:00
|
|
|
; FIXME: exp10() is not widely supported.
|
2019-09-07 03:41:49 +08:00
|
|
|
declare float @exp10f(float)
|
|
|
|
define float @f_exp10f() {
|
|
|
|
; CHECK-LABEL: @f_exp10f(
|
2019-10-01 04:53:23 +08:00
|
|
|
; CHECK-NEXT: [[RES:%.*]] = tail call float @exp10f(float 1.000000e+00)
|
2019-09-07 03:41:49 +08:00
|
|
|
; CHECK-NEXT: ret float [[RES]]
|
|
|
|
;
|
2019-10-01 04:53:23 +08:00
|
|
|
%res = tail call float @exp10f(float 1.0)
|
2019-09-07 03:41:49 +08:00
|
|
|
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(
|
2019-10-01 04:53:23 +08:00
|
|
|
; CHECK-NEXT: ret float 0.000000e+00
|
2019-09-07 03:41:49 +08: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
|
|
|
|
}
|