• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -soft-float -mips16-hard-float -relocation-model=pic < %s | FileCheck %s -check-prefix=pic
2
3@x = global float 1.500000e+00, align 4
4@xn = global float -1.900000e+01, align 4
5@negone = global float -1.000000e+00, align 4
6@one = global float 1.000000e+00, align 4
7@xd = global double 0x40048B0A8EA4481E, align 8
8@xdn = global double 0xC0311F9ADD373963, align 8
9@negoned = global double -1.000000e+00, align 8
10@oned = global float 1.000000e+00, align 4
11@y = common global float 0.000000e+00, align 4
12@yd = common global double 0.000000e+00, align 8
13
14; Function Attrs: nounwind
15define void @foo1() #0 {
16entry:
17  %0 = load float* @x, align 4
18  %1 = load float* @one, align 4
19  %call = call float @copysignf(float %0, float %1) #2
20  store float %call, float* @y, align 4
21  ret void
22}
23
24; Function Attrs: nounwind readnone
25declare float @copysignf(float, float) #1
26
27; Function Attrs: nounwind
28define void @foo2() #0 {
29entry:
30  %0 = load float* @x, align 4
31  %1 = load float* @negone, align 4
32  %call = call float @copysignf(float %0, float %1) #2
33  store float %call, float* @y, align 4
34  ret void
35}
36
37; Function Attrs: nounwind
38define void @foo3() #0 {
39entry:
40  %0 = load double* @xd, align 8
41  %1 = load float* @oned, align 4
42  %conv = fpext float %1 to double
43  %call = call double @copysign(double %0, double %conv) #2
44  store double %call, double* @yd, align 8
45  ret void
46}
47
48; Function Attrs: nounwind readnone
49declare double @copysign(double, double) #1
50
51; Function Attrs: nounwind
52define void @foo4() #0 {
53entry:
54  %0 = load double* @xd, align 8
55  %1 = load double* @negoned, align 8
56  %call = call double @copysign(double %0, double %1) #2
57  store double %call, double* @yd, align 8
58  ret void
59}
60
61; Function Attrs: nounwind
62define void @foo5() #0 {
63entry:
64  %0 = load float* @xn, align 4
65  %call = call float @fabsf(float %0) #2
66  store float %call, float* @y, align 4
67  ret void
68}
69
70; Function Attrs: nounwind readnone
71declare float @fabsf(float) #1
72
73; Function Attrs: nounwind
74define void @foo6() #0 {
75entry:
76  %0 = load double* @xdn, align 8
77  %call = call double @fabs(double %0) #2
78  store double %call, double* @yd, align 8
79  ret void
80}
81
82; Function Attrs: nounwind readnone
83declare double @fabs(double) #1
84
85; Function Attrs: nounwind
86define void @foo7() #0 {
87entry:
88  %0 = load float* @x, align 4
89  %call = call float @sinf(float %0) #3
90;pic:	lw	${{[0-9]+}}, %call16(sinf)(${{[0-9]+}})
91;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
92  store float %call, float* @y, align 4
93  ret void
94}
95
96; Function Attrs: nounwind
97declare float @sinf(float) #0
98
99; Function Attrs: nounwind
100define void @foo8() #0 {
101entry:
102  %0 = load double* @xd, align 8
103  %call = call double @sin(double %0) #3
104;pic:	lw	${{[0-9]+}}, %call16(sin)(${{[0-9]+}})
105;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
106  store double %call, double* @yd, align 8
107  ret void
108}
109
110; Function Attrs: nounwind
111declare double @sin(double) #0
112
113; Function Attrs: nounwind
114define void @foo9() #0 {
115entry:
116  %0 = load float* @x, align 4
117  %call = call float @cosf(float %0) #3
118;pic:	lw	${{[0-9]+}}, %call16(cosf)(${{[0-9]+}})
119;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
120  store float %call, float* @y, align 4
121  ret void
122}
123
124; Function Attrs: nounwind
125declare float @cosf(float) #0
126
127; Function Attrs: nounwind
128define void @foo10() #0 {
129entry:
130  %0 = load double* @xd, align 8
131  %call = call double @cos(double %0) #3
132;pic:	lw	${{[0-9]+}}, %call16(cos)(${{[0-9]+}})
133;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
134  store double %call, double* @yd, align 8
135  ret void
136}
137
138; Function Attrs: nounwind
139declare double @cos(double) #0
140
141; Function Attrs: nounwind
142define void @foo11() #0 {
143entry:
144  %0 = load float* @x, align 4
145  %call = call float @sqrtf(float %0) #3
146;pic:	lw	${{[0-9]+}}, %call16(sqrtf)(${{[0-9]+}})
147;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
148  store float %call, float* @y, align 4
149  ret void
150}
151
152; Function Attrs: nounwind
153declare float @sqrtf(float) #0
154
155; Function Attrs: nounwind
156define void @foo12() #0 {
157entry:
158  %0 = load double* @xd, align 8
159  %call = call double @sqrt(double %0) #3
160;pic:	lw	${{[0-9]+}}, %call16(sqrt)(${{[0-9]+}})
161;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
162  store double %call, double* @yd, align 8
163  ret void
164}
165
166; Function Attrs: nounwind
167declare double @sqrt(double) #0
168
169; Function Attrs: nounwind
170define void @foo13() #0 {
171entry:
172  %0 = load float* @x, align 4
173  %call = call float @floorf(float %0) #2
174;pic:	lw	${{[0-9]+}}, %call16(floorf)(${{[0-9]+}})
175;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
176  store float %call, float* @y, align 4
177  ret void
178}
179
180; Function Attrs: nounwind readnone
181declare float @floorf(float) #1
182
183; Function Attrs: nounwind
184define void @foo14() #0 {
185entry:
186  %0 = load double* @xd, align 8
187  %call = call double @floor(double %0) #2
188;pic:	lw	${{[0-9]+}}, %call16(floor)(${{[0-9]+}})
189;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
190  store double %call, double* @yd, align 8
191  ret void
192}
193
194; Function Attrs: nounwind readnone
195declare double @floor(double) #1
196
197; Function Attrs: nounwind
198define void @foo15() #0 {
199entry:
200  %0 = load float* @x, align 4
201  %call = call float @nearbyintf(float %0) #2
202;pic:	lw	${{[0-9]+}}, %call16(nearbyintf)(${{[0-9]+}})
203;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
204  store float %call, float* @y, align 4
205  ret void
206}
207
208; Function Attrs: nounwind readnone
209declare float @nearbyintf(float) #1
210
211; Function Attrs: nounwind
212define void @foo16() #0 {
213entry:
214  %0 = load double* @xd, align 8
215  %call = call double @nearbyint(double %0) #2
216;pic:	lw	${{[0-9]+}}, %call16(nearbyint)(${{[0-9]+}})
217;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
218  store double %call, double* @yd, align 8
219  ret void
220}
221
222; Function Attrs: nounwind readnone
223declare double @nearbyint(double) #1
224
225; Function Attrs: nounwind
226define void @foo17() #0 {
227entry:
228  %0 = load float* @x, align 4
229  %call = call float @ceilf(float %0) #2
230;pic:	lw	${{[0-9]+}}, %call16(ceilf)(${{[0-9]+}})
231;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
232  store float %call, float* @y, align 4
233  ret void
234}
235
236; Function Attrs: nounwind readnone
237declare float @ceilf(float) #1
238
239; Function Attrs: nounwind
240define void @foo18() #0 {
241entry:
242  %0 = load double* @xd, align 8
243  %call = call double @ceil(double %0) #2
244;pic:	lw	${{[0-9]+}}, %call16(ceil)(${{[0-9]+}})
245;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
246  store double %call, double* @yd, align 8
247  ret void
248}
249
250; Function Attrs: nounwind readnone
251declare double @ceil(double) #1
252
253; Function Attrs: nounwind
254define void @foo19() #0 {
255entry:
256  %0 = load float* @x, align 4
257  %call = call float @rintf(float %0) #2
258;pic:	lw	${{[0-9]+}}, %call16(rintf)(${{[0-9]+}})
259;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
260  store float %call, float* @y, align 4
261  ret void
262}
263
264; Function Attrs: nounwind readnone
265declare float @rintf(float) #1
266
267; Function Attrs: nounwind
268define void @foo20() #0 {
269entry:
270  %0 = load double* @xd, align 8
271  %call = call double @rint(double %0) #2
272;pic:	lw	${{[0-9]+}}, %call16(rint)(${{[0-9]+}})
273;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
274  store double %call, double* @yd, align 8
275  ret void
276}
277
278; Function Attrs: nounwind readnone
279declare double @rint(double) #1
280
281; Function Attrs: nounwind
282define void @foo21() #0 {
283entry:
284  %0 = load float* @x, align 4
285  %call = call float @truncf(float %0) #2
286;pic:	lw	${{[0-9]+}}, %call16(truncf)(${{[0-9]+}})
287;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
288  store float %call, float* @y, align 4
289  ret void
290}
291
292; Function Attrs: nounwind readnone
293declare float @truncf(float) #1
294
295; Function Attrs: nounwind
296define void @foo22() #0 {
297entry:
298  %0 = load double* @xd, align 8
299  %call = call double @trunc(double %0) #2
300;pic:	lw	${{[0-9]+}}, %call16(trunc)(${{[0-9]+}})
301;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
302  store double %call, double* @yd, align 8
303  ret void
304}
305
306; Function Attrs: nounwind readnone
307declare double @trunc(double) #1
308
309; Function Attrs: nounwind
310define void @foo23() #0 {
311entry:
312  %0 = load float* @x, align 4
313  %call = call float @log2f(float %0) #3
314;pic:	lw	${{[0-9]+}}, %call16(log2f)(${{[0-9]+}})
315;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
316  store float %call, float* @y, align 4
317  ret void
318}
319
320; Function Attrs: nounwind
321declare float @log2f(float) #0
322
323; Function Attrs: nounwind
324define void @foo24() #0 {
325entry:
326  %0 = load double* @xd, align 8
327  %call = call double @log2(double %0) #3
328;pic:	lw	${{[0-9]+}}, %call16(log2)(${{[0-9]+}})
329;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
330  store double %call, double* @yd, align 8
331  ret void
332}
333
334; Function Attrs: nounwind
335declare double @log2(double) #0
336
337; Function Attrs: nounwind
338define void @foo25() #0 {
339entry:
340  %0 = load float* @x, align 4
341  %call = call float @exp2f(float %0) #3
342;pic:	lw	${{[0-9]+}}, %call16(exp2f)(${{[0-9]+}})
343;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
344  store float %call, float* @y, align 4
345  ret void
346}
347
348; Function Attrs: nounwind
349declare float @exp2f(float) #0
350
351; Function Attrs: nounwind
352define void @foo26() #0 {
353entry:
354  %0 = load double* @xd, align 8
355  %call = call double @exp2(double %0) #3
356;pic:	lw	${{[0-9]+}}, %call16(exp2)(${{[0-9]+}})
357;pic:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
358  store double %call, double* @yd, align 8
359  ret void
360}
361
362; Function Attrs: nounwind
363declare double @exp2(double) #0
364
365attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="true" }
366attributes #1 = { nounwind readnone "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="true" }
367attributes #2 = { nounwind readnone }
368attributes #3 = { nounwind }
369