xref: /aosp_15_r20/external/llvm/test/Transforms/InstCombine/win-math.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -O2 -S -mtriple=i386-pc-win32 < %s | FileCheck %s -check-prefix=WIN32
2*9880d681SAndroid Build Coastguard Worker; RUN: opt -O2 -S -mtriple=x86_64-pc-win32 < %s | FileCheck %s -check-prefix=WIN64
3*9880d681SAndroid Build Coastguard Worker; RUN: opt -O2 -S -mtriple=i386-pc-mingw32 < %s | FileCheck %s -check-prefix=MINGW32
4*9880d681SAndroid Build Coastguard Worker; RUN: opt -O2 -S -mtriple=x86_64-pc-mingw32 < %s | FileCheck %s -check-prefix=MINGW64
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; x86 win32 msvcrt does not provide entry points for single-precision libm.
7*9880d681SAndroid Build Coastguard Worker; x86-64 win32 msvcrt does (except for fabsf)
8*9880d681SAndroid Build Coastguard Worker; msvcrt does not provide C99 math, but mingw32 does.
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerdeclare double @acos(double %x)
11*9880d681SAndroid Build Coastguard Workerdefine float @float_acos(float %x) nounwind readnone {
12*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_acos(
13*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @acosf
14*9880d681SAndroid Build Coastguard Worker; WIN32: double @acos
15*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
16*9880d681SAndroid Build Coastguard Worker    %2 = call double @acos(double %1)
17*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
18*9880d681SAndroid Build Coastguard Worker    ret float %3
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdeclare double @asin(double %x)
22*9880d681SAndroid Build Coastguard Workerdefine float @float_asin(float %x) nounwind readnone {
23*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_asin(
24*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @asinf
25*9880d681SAndroid Build Coastguard Worker; WIN32: double @asin
26*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
27*9880d681SAndroid Build Coastguard Worker    %2 = call double @asin(double %1)
28*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
29*9880d681SAndroid Build Coastguard Worker    ret float %3
30*9880d681SAndroid Build Coastguard Worker}
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerdeclare double @atan(double %x)
33*9880d681SAndroid Build Coastguard Workerdefine float @float_atan(float %x) nounwind readnone {
34*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_atan(
35*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @atanf
36*9880d681SAndroid Build Coastguard Worker; WIN32: double @atan
37*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
38*9880d681SAndroid Build Coastguard Worker    %2 = call double @atan(double %1)
39*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
40*9880d681SAndroid Build Coastguard Worker    ret float %3
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerdeclare double @atan2(double %x, double %y)
44*9880d681SAndroid Build Coastguard Workerdefine float @float_atan2(float %x, float %y) nounwind readnone {
45*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_atan2(
46*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @atan2f
47*9880d681SAndroid Build Coastguard Worker; WIN32: double @atan2
48*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
49*9880d681SAndroid Build Coastguard Worker    %2 = fpext float %y to double
50*9880d681SAndroid Build Coastguard Worker    %3 = call double @atan2(double %1, double %2)
51*9880d681SAndroid Build Coastguard Worker    %4 = fptrunc double %3 to float
52*9880d681SAndroid Build Coastguard Worker    ret float %4
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerdeclare double @ceil(double %x)
56*9880d681SAndroid Build Coastguard Workerdefine float @float_ceil(float %x) nounwind readnone {
57*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_ceil(
58*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @ceilf
59*9880d681SAndroid Build Coastguard Worker; WIN32: double @ceil
60*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: @float_ceil(
61*9880d681SAndroid Build Coastguard Worker; WIN64: float @ceilf
62*9880d681SAndroid Build Coastguard Worker; WIN64-NOT: double @ceil
63*9880d681SAndroid Build Coastguard Worker; MINGW32-LABEL: @float_ceil(
64*9880d681SAndroid Build Coastguard Worker; MINGW32: float @ceilf
65*9880d681SAndroid Build Coastguard Worker; MINGW32-NOT: double @ceil
66*9880d681SAndroid Build Coastguard Worker; MINGW64-LABEL: @float_ceil(
67*9880d681SAndroid Build Coastguard Worker; MINGW64: float @ceilf
68*9880d681SAndroid Build Coastguard Worker; MINGW64-NOT: double @ceil
69*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
70*9880d681SAndroid Build Coastguard Worker    %2 = call double @ceil(double %1)
71*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
72*9880d681SAndroid Build Coastguard Worker    ret float %3
73*9880d681SAndroid Build Coastguard Worker}
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Workerdeclare double @_copysign(double %x)
76*9880d681SAndroid Build Coastguard Workerdefine float @float_copysign(float %x) nounwind readnone {
77*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_copysign(
78*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @copysignf
79*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @_copysignf
80*9880d681SAndroid Build Coastguard Worker; WIN32: double @_copysign
81*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
82*9880d681SAndroid Build Coastguard Worker    %2 = call double @_copysign(double %1)
83*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
84*9880d681SAndroid Build Coastguard Worker    ret float %3
85*9880d681SAndroid Build Coastguard Worker}
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Workerdeclare double @cos(double %x)
88*9880d681SAndroid Build Coastguard Workerdefine float @float_cos(float %x) nounwind readnone {
89*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_cos(
90*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @cosf
91*9880d681SAndroid Build Coastguard Worker; WIN32: double @cos
92*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
93*9880d681SAndroid Build Coastguard Worker    %2 = call double @cos(double %1)
94*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
95*9880d681SAndroid Build Coastguard Worker    ret float %3
96*9880d681SAndroid Build Coastguard Worker}
97*9880d681SAndroid Build Coastguard Worker
98*9880d681SAndroid Build Coastguard Workerdeclare double @cosh(double %x)
99*9880d681SAndroid Build Coastguard Workerdefine float @float_cosh(float %x) nounwind readnone {
100*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_cosh(
101*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @coshf
102*9880d681SAndroid Build Coastguard Worker; WIN32: double @cosh
103*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
104*9880d681SAndroid Build Coastguard Worker    %2 = call double @cosh(double %1)
105*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
106*9880d681SAndroid Build Coastguard Worker    ret float %3
107*9880d681SAndroid Build Coastguard Worker}
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Workerdeclare double @exp(double %x, double %y)
110*9880d681SAndroid Build Coastguard Workerdefine float @float_exp(float %x, float %y) nounwind readnone {
111*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_exp(
112*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @expf
113*9880d681SAndroid Build Coastguard Worker; WIN32: double @exp
114*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
115*9880d681SAndroid Build Coastguard Worker    %2 = fpext float %y to double
116*9880d681SAndroid Build Coastguard Worker    %3 = call double @exp(double %1, double %2)
117*9880d681SAndroid Build Coastguard Worker    %4 = fptrunc double %3 to float
118*9880d681SAndroid Build Coastguard Worker    ret float %4
119*9880d681SAndroid Build Coastguard Worker}
120*9880d681SAndroid Build Coastguard Worker
121*9880d681SAndroid Build Coastguard Workerdeclare double @fabs(double %x, double %y)
122*9880d681SAndroid Build Coastguard Workerdefine float @float_fabs(float %x, float %y) nounwind readnone {
123*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_fabs(
124*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @fabsf
125*9880d681SAndroid Build Coastguard Worker; WIN32: double @fabs
126*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: @float_fabs(
127*9880d681SAndroid Build Coastguard Worker; WIN64-NOT: float @fabsf
128*9880d681SAndroid Build Coastguard Worker; WIN64: double @fabs
129*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
130*9880d681SAndroid Build Coastguard Worker    %2 = fpext float %y to double
131*9880d681SAndroid Build Coastguard Worker    %3 = call double @fabs(double %1, double %2)
132*9880d681SAndroid Build Coastguard Worker    %4 = fptrunc double %3 to float
133*9880d681SAndroid Build Coastguard Worker    ret float %4
134*9880d681SAndroid Build Coastguard Worker}
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard Workerdeclare double @floor(double %x)
137*9880d681SAndroid Build Coastguard Workerdefine float @float_floor(float %x) nounwind readnone {
138*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_floor(
139*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @floorf
140*9880d681SAndroid Build Coastguard Worker; WIN32: double @floor
141*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: @float_floor(
142*9880d681SAndroid Build Coastguard Worker; WIN64: float @floorf
143*9880d681SAndroid Build Coastguard Worker; WIN64-NOT: double @floor
144*9880d681SAndroid Build Coastguard Worker; MINGW32-LABEL: @float_floor(
145*9880d681SAndroid Build Coastguard Worker; MINGW32: float @floorf
146*9880d681SAndroid Build Coastguard Worker; MINGW32-NOT: double @floor
147*9880d681SAndroid Build Coastguard Worker; MINGW64-LABEL: @float_floor(
148*9880d681SAndroid Build Coastguard Worker; MINGW64: float @floorf
149*9880d681SAndroid Build Coastguard Worker; MINGW64-NOT: double @floor
150*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
151*9880d681SAndroid Build Coastguard Worker    %2 = call double @floor(double %1)
152*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
153*9880d681SAndroid Build Coastguard Worker    ret float %3
154*9880d681SAndroid Build Coastguard Worker}
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Workerdeclare double @fmod(double %x, double %y)
157*9880d681SAndroid Build Coastguard Workerdefine float @float_fmod(float %x, float %y) nounwind readnone {
158*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_fmod(
159*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @fmodf
160*9880d681SAndroid Build Coastguard Worker; WIN32: double @fmod
161*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
162*9880d681SAndroid Build Coastguard Worker    %2 = fpext float %y to double
163*9880d681SAndroid Build Coastguard Worker    %3 = call double @fmod(double %1, double %2)
164*9880d681SAndroid Build Coastguard Worker    %4 = fptrunc double %3 to float
165*9880d681SAndroid Build Coastguard Worker    ret float %4
166*9880d681SAndroid Build Coastguard Worker}
167*9880d681SAndroid Build Coastguard Worker
168*9880d681SAndroid Build Coastguard Workerdeclare double @log(double %x)
169*9880d681SAndroid Build Coastguard Workerdefine float @float_log(float %x) nounwind readnone {
170*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_log(
171*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @logf
172*9880d681SAndroid Build Coastguard Worker; WIN32: double @log
173*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
174*9880d681SAndroid Build Coastguard Worker    %2 = call double @log(double %1)
175*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
176*9880d681SAndroid Build Coastguard Worker    ret float %3
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Workerdeclare double @pow(double %x, double %y)
180*9880d681SAndroid Build Coastguard Workerdefine float @float_pow(float %x, float %y) nounwind readnone {
181*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_pow(
182*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @powf
183*9880d681SAndroid Build Coastguard Worker; WIN32: double @pow
184*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
185*9880d681SAndroid Build Coastguard Worker    %2 = fpext float %y to double
186*9880d681SAndroid Build Coastguard Worker    %3 = call double @pow(double %1, double %2)
187*9880d681SAndroid Build Coastguard Worker    %4 = fptrunc double %3 to float
188*9880d681SAndroid Build Coastguard Worker    ret float %4
189*9880d681SAndroid Build Coastguard Worker}
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Workerdeclare double @sin(double %x)
192*9880d681SAndroid Build Coastguard Workerdefine float @float_sin(float %x) nounwind readnone {
193*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_sin(
194*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @sinf
195*9880d681SAndroid Build Coastguard Worker; WIN32: double @sin
196*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
197*9880d681SAndroid Build Coastguard Worker    %2 = call double @sin(double %1)
198*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
199*9880d681SAndroid Build Coastguard Worker    ret float %3
200*9880d681SAndroid Build Coastguard Worker}
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Workerdeclare double @sinh(double %x)
203*9880d681SAndroid Build Coastguard Workerdefine float @float_sinh(float %x) nounwind readnone {
204*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_sinh(
205*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @sinhf
206*9880d681SAndroid Build Coastguard Worker; WIN32: double @sinh
207*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
208*9880d681SAndroid Build Coastguard Worker    %2 = call double @sinh(double %1)
209*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
210*9880d681SAndroid Build Coastguard Worker    ret float %3
211*9880d681SAndroid Build Coastguard Worker}
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Workerdeclare double @sqrt(double %x)
214*9880d681SAndroid Build Coastguard Workerdefine float @float_sqrt(float %x) nounwind readnone {
215*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_sqrt(
216*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @sqrtf
217*9880d681SAndroid Build Coastguard Worker; WIN32: double @sqrt
218*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: @float_sqrt(
219*9880d681SAndroid Build Coastguard Worker; WIN64: float @sqrtf
220*9880d681SAndroid Build Coastguard Worker; WIN64-NOT: double @sqrt
221*9880d681SAndroid Build Coastguard Worker; MINGW32-LABEL: @float_sqrt(
222*9880d681SAndroid Build Coastguard Worker; MINGW32: float @sqrtf
223*9880d681SAndroid Build Coastguard Worker; MINGW32-NOT: double @sqrt
224*9880d681SAndroid Build Coastguard Worker; MINGW64-LABEL: @float_sqrt(
225*9880d681SAndroid Build Coastguard Worker; MINGW64: float @sqrtf
226*9880d681SAndroid Build Coastguard Worker; MINGW64-NOT: double @sqrt
227*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
228*9880d681SAndroid Build Coastguard Worker    %2 = call double @sqrt(double %1)
229*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
230*9880d681SAndroid Build Coastguard Worker    ret float %3
231*9880d681SAndroid Build Coastguard Worker}
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Workerdeclare double @tan(double %x)
234*9880d681SAndroid Build Coastguard Workerdefine float @float_tan(float %x) nounwind readnone {
235*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_tan(
236*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @tanf
237*9880d681SAndroid Build Coastguard Worker; WIN32: double @tan
238*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
239*9880d681SAndroid Build Coastguard Worker    %2 = call double @tan(double %1)
240*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
241*9880d681SAndroid Build Coastguard Worker    ret float %3
242*9880d681SAndroid Build Coastguard Worker}
243*9880d681SAndroid Build Coastguard Worker
244*9880d681SAndroid Build Coastguard Workerdeclare double @tanh(double %x)
245*9880d681SAndroid Build Coastguard Workerdefine float @float_tanh(float %x) nounwind readnone {
246*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_tanh(
247*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @tanhf
248*9880d681SAndroid Build Coastguard Worker; WIN32: double @tanh
249*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
250*9880d681SAndroid Build Coastguard Worker    %2 = call double @tanh(double %1)
251*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
252*9880d681SAndroid Build Coastguard Worker    ret float %3
253*9880d681SAndroid Build Coastguard Worker}
254*9880d681SAndroid Build Coastguard Worker
255*9880d681SAndroid Build Coastguard Worker; win32 does not have round; mingw32 does
256*9880d681SAndroid Build Coastguard Workerdeclare double @round(double %x)
257*9880d681SAndroid Build Coastguard Workerdefine float @float_round(float %x) nounwind readnone {
258*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_round(
259*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @roundf
260*9880d681SAndroid Build Coastguard Worker; WIN32: double @round
261*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: @float_round(
262*9880d681SAndroid Build Coastguard Worker; WIN64-NOT: float @roundf
263*9880d681SAndroid Build Coastguard Worker; WIN64: double @round
264*9880d681SAndroid Build Coastguard Worker; MINGW32-LABEL: @float_round(
265*9880d681SAndroid Build Coastguard Worker; MINGW32: float @roundf
266*9880d681SAndroid Build Coastguard Worker; MINGW32-NOT: double @round
267*9880d681SAndroid Build Coastguard Worker; MINGW64-LABEL: @float_round(
268*9880d681SAndroid Build Coastguard Worker; MINGW64: float @roundf
269*9880d681SAndroid Build Coastguard Worker; MINGW64-NOT: double @round
270*9880d681SAndroid Build Coastguard Worker    %1 = fpext float %x to double
271*9880d681SAndroid Build Coastguard Worker    %2 = call double @round(double %1)
272*9880d681SAndroid Build Coastguard Worker    %3 = fptrunc double %2 to float
273*9880d681SAndroid Build Coastguard Worker    ret float %3
274*9880d681SAndroid Build Coastguard Worker}
275*9880d681SAndroid Build Coastguard Worker
276*9880d681SAndroid Build Coastguard Workerdeclare float @powf(float, float)
277*9880d681SAndroid Build Coastguard Worker; win32 lacks sqrtf&fabsf, win64 lacks fabsf
278*9880d681SAndroid Build Coastguard Workerdefine float @float_powsqrt(float %x) nounwind readnone {
279*9880d681SAndroid Build Coastguard Worker; WIN32-LABEL: @float_powsqrt(
280*9880d681SAndroid Build Coastguard Worker; WIN32-NOT: float @sqrtf
281*9880d681SAndroid Build Coastguard Worker; WIN32: float @powf
282*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: @float_powsqrt(
283*9880d681SAndroid Build Coastguard Worker; WIN64-NOT: float @sqrtf
284*9880d681SAndroid Build Coastguard Worker; WIN64: float @powf
285*9880d681SAndroid Build Coastguard Worker; MINGW32-LABEL: @float_powsqrt(
286*9880d681SAndroid Build Coastguard Worker; MINGW32: float @sqrtf
287*9880d681SAndroid Build Coastguard Worker; MINGW32: float @fabsf
288*9880d681SAndroid Build Coastguard Worker; MINGW32-NOT: float @powf
289*9880d681SAndroid Build Coastguard Worker; MINGW64-LABEL: @float_powsqrt(
290*9880d681SAndroid Build Coastguard Worker; MINGW64: float @sqrtf
291*9880d681SAndroid Build Coastguard Worker; MINGW64: float @fabsf
292*9880d681SAndroid Build Coastguard Worker; MINGW64-NOT: float @powf
293*9880d681SAndroid Build Coastguard Worker    %1 = call float @powf(float %x, float 0.5)
294*9880d681SAndroid Build Coastguard Worker    ret float %1
295*9880d681SAndroid Build Coastguard Worker}
296