1 ! RUN: bbc -emit-fir -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CHECK,CMPLX-PRECISE"
2 ! RUN: bbc --math-runtime=precise -emit-fir -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CMPLX-PRECISE"
3 ! RUN: %flang_fc1 -emit-fir -mllvm -outline-intrinsics %s -o - | FileCheck %s
4 ! RUN: %flang_fc1 -fapprox-func -emit-fir -mllvm -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CMPLX-FAST"
6 ! CHECK-LABEL: tan_testr
7 subroutine tan_testr(a
, b
)
9 ! CHECK: fir.call @fir.tan.contract.f32.f32
13 ! CHECK-LABEL: tan_testd
14 subroutine tan_testd(a
, b
)
16 ! CHECK: fir.call @fir.tan.contract.f64.f64
20 ! CHECK-LABEL: tan_testc
21 subroutine tan_testc(z
)
23 ! CHECK: fir.call @fir.tan.contract.z4.z4
27 ! CHECK-LABEL: tan_testcd
28 subroutine tan_testcd(z
)
30 ! CHECK: fir.call @fir.tan.contract.z8.z8
34 ! CHECK-LABEL: atan_testr
35 subroutine atan_testr(a
, b
)
37 ! CHECK: fir.call @fir.atan.contract.f32.f32
41 ! CHECK-LABEL: atan_testd
42 subroutine atan_testd(a
, b
)
44 ! CHECK: fir.call @fir.atan.contract.f64.f64
48 ! CHECK-LABEL: atan_testc
49 subroutine atan_testc(z
)
51 ! CHECK: fir.call @fir.atan.contract.z4.z4
55 ! CHECK-LABEL: atan_testcd
56 subroutine atan_testcd(z
)
58 ! CHECK: fir.call @fir.atan.contract.z8.z8
62 ! CHECK-LABEL: cos_testr
63 subroutine cos_testr(a
, b
)
65 ! CHECK: fir.call @fir.cos.contract.f32.f32
69 ! CHECK-LABEL: cos_testd
70 subroutine cos_testd(a
, b
)
72 ! CHECK: fir.call @fir.cos.contract.f64.f64
76 ! CHECK-LABEL: cos_testc
77 subroutine cos_testc(z
)
79 ! CHECK: fir.call @fir.cos.contract.z4.z4
83 ! CHECK-LABEL: cos_testcd
84 subroutine cos_testcd(z
)
86 ! CHECK: fir.call @fir.cos.contract.z8.z8
90 ! CHECK-LABEL: cosh_testr
91 subroutine cosh_testr(a
, b
)
93 ! CHECK: fir.call @fir.cosh.contract.f32.f32
97 ! CHECK-LABEL: cosh_testd
98 subroutine cosh_testd(a
, b
)
100 ! CHECK: fir.call @fir.cosh.contract.f64.f64
104 ! CHECK-LABEL: cosh_testc
105 subroutine cosh_testc(z
)
107 ! CHECK: fir.call @fir.cosh.contract.z4.z4
111 ! CHECK-LABEL: cosh_testcd
112 subroutine cosh_testcd(z
)
114 ! CHECK: fir.call @fir.cosh.contract.z8.z8
118 ! CHECK-LABEL: sin_testr
119 subroutine sin_testr(a
, b
)
121 ! CHECK: fir.call @fir.sin.contract.f32.f32
125 ! CHECK-LABEL: sin_testd
126 subroutine sin_testd(a
, b
)
128 ! CHECK: fir.call @fir.sin.contract.f64.f64
132 ! CHECK-LABEL: sin_testc
133 subroutine sin_testc(z
)
135 ! CHECK: fir.call @fir.sin.contract.z4.z4
139 ! CHECK-LABEL: sin_testcd
140 subroutine sin_testcd(z
)
142 ! CHECK: fir.call @fir.sin.contract.z8.z8
146 ! CHECK-LABEL: sinh_testr
147 subroutine sinh_testr(a
, b
)
149 ! CHECK: fir.call @fir.sinh.contract.f32.f32
153 ! CHECK-LABEL: sinh_testd
154 subroutine sinh_testd(a
, b
)
156 ! CHECK: fir.call @fir.sinh.contract.f64.f64
160 ! CHECK-LABEL: sinh_testc
161 subroutine sinh_testc(z
)
163 ! CHECK: fir.call @fir.sinh.contract.z4.z4
167 ! CHECK-LABEL: sinh_testcd
168 subroutine sinh_testcd(z
)
170 ! CHECK: fir.call @fir.sinh.contract.z8.z8
174 ! CHECK-LABEL: @fir.tan.contract.f32.f32
175 ! CHECK: math.tan %{{.*}} : f32
177 ! CHECK-LABEL: @fir.tan.contract.f64.f64
178 ! CHECK: math.tan %{{.*}} : f64
180 ! CHECK-LABEL: @fir.tan.contract.z4.z4
181 ! CMPLX-FAST: complex.tan %{{.*}} : complex<f32>
182 ! CMPLX-PRECISE: fir.call @ctanf
184 ! CHECK-LABEL: @fir.tan.contract.z8.z8
185 ! CMPLX-FAST: complex.tan %{{.*}} : complex<f64>
186 ! CMPLX-PRECISE: fir.call @ctan
188 ! CHECK-LABEL: @fir.atan.contract.f32.f32
189 ! CHECK: math.atan %{{.*}} : f32
191 ! CHECK-LABEL: @fir.atan.contract.f64.f64
192 ! CHECK: math.atan %{{.*}} : f64
194 ! CHECK-LABEL: @fir.atan.contract.z4.z4
195 ! CHECK: fir.call @catanf
197 ! CHECK-LABEL: @fir.atan.contract.z8.z8
198 ! CHECK: fir.call @catan
200 ! CHECK-LABEL: @fir.cos.contract.f32.f32
201 ! CHECK: math.cos %{{.*}} : f32
203 ! CHECK-LABEL: @fir.cos.contract.f64.f64
204 ! CHECK: math.cos %{{.*}} : f64
206 ! CHECK-LABEL: @fir.cos.contract.z4.z4
207 ! CMPLX-FAST: complex.cos %{{.*}} : complex<f32>
208 ! CMPLX-PRECISE: fir.call @ccosf
210 ! CHECK-LABEL: @fir.cos.contract.z8.z8
211 ! CMPLX-FAST: complex.cos %{{.*}} : complex<f64>
212 ! CMPLX-PRECISE: fir.call @ccos
214 ! CHECK-LABEL: @fir.cosh.contract.f32.f32
215 ! CHECK: fir.call {{.*}}cosh
217 ! CHECK-LABEL: @fir.cosh.contract.f64.f64
218 ! CHECK: fir.call {{.*}}cosh
220 ! CHECK-LABEL: @fir.cosh.contract.z4.z4
221 ! CHECK: fir.call @ccoshf
223 ! CHECK-LABEL: @fir.cosh.contract.z8.z8
224 ! CHECK: fir.call @ccosh
226 ! CHECK-LABEL: @fir.sin.contract.f32.f32
227 ! CHECK: math.sin %{{.*}} : f32
229 ! CHECK-LABEL: @fir.sin.contract.f64.f64
230 ! CHECK: math.sin %{{.*}} : f64
232 ! CHECK-LABEL: @fir.sin.contract.z4.z4
233 ! CMPLX-FAST: complex.sin %{{.*}} : complex<f32>
234 ! CMPLX-PRECISE: fir.call @csinf
236 ! CHECK-LABEL: @fir.sin.contract.z8.z8
237 ! CMPLX-FAST: complex.sin %{{.*}} : complex<f64>
238 ! CMPLX-PRECISE: fir.call @csin
240 ! CHECK-LABEL: @fir.sinh.contract.f32.f32
241 ! CHECK: fir.call {{.*}}sinh
243 ! CHECK-LABEL: @fir.sinh.contract.f64.f64
244 ! CHECK: fir.call {{.*}}sinh
246 ! CHECK-LABEL: @fir.sinh.contract.z4.z4
247 ! CHECK: fir.call @csinhf
249 ! CHECK-LABEL: @fir.sinh.contract.z8.z8
250 ! CHECK: fir.call @csinh