]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgcc/config/avr/libf7/f7-wraps.h
Update copyright years.
[thirdparty/gcc.git] / libgcc / config / avr / libf7 / f7-wraps.h
CommitLineData
99dee823 1;; Copyright (C) 2019-2021 Free Software Foundation, Inc.
f30dd607
GJL
2;;
3;; This file is part of LIBF7, which is part of GCC.
4;;
5;; GCC is free software; you can redistribute it and/or modify it under
6;; the terms of the GNU General Public License as published by the Free
7;; Software Foundation; either version 3, or (at your option) any later
8;; version.
9;;
10;; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11;; WARRANTY; without even the implied warranty of MERCHANTABILITY or
12;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13;; for more details.
14;;
15;; Under Section 7 of GPL version 3, you are granted additional
16;; permissions described in the GCC Runtime Library Exception, version
17;; 3.1, as published by the Free Software Foundation.
18;;
19;; You should have received a copy of the GNU General Public License and
20;; a copy of the GCC Runtime Library Exception along with this program;
21;; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22;; <http://www.gnu.org/licenses/>. */
23
24;; Auto-generated file, do not change by hand.
25;;
26;; Wrappers for double and long double functions to use functions that
27;; operate on f7_t, and get f7_t* and const f7_t*.
28;;
29;; Generated by: f7wraps.sh
30;; Included by : libf7-asm.sx
31;; WITH_LIBF7_MATH_FUNCTIONS=1
32;; WITH_LIBF7_MATH_SYMBOLS=1
33
34;; Functions that usually live in libgcc: __<name>df3 for <name> in:
35;; add sub mul div
36
37;; double __adddf3 (double, double) ; add
38#ifdef F7MOD_D_add_
39_DEFUN __adddf3
40 ALIAS __add
41 .global F7_NAME(add)
42 ldi ZH, hi8(gs(F7_NAME(add)))
43 ldi ZL, lo8(gs(F7_NAME(add)))
44 F7jmp call_ddd
45_ENDF __adddf3
46#endif /* F7MOD_D_add_ */
47
48;; double __subdf3 (double, double) ; sub
49#ifdef F7MOD_D_sub_
50_DEFUN __subdf3
51 ALIAS __sub
52 .global F7_NAME(sub)
53 ldi ZH, hi8(gs(F7_NAME(sub)))
54 ldi ZL, lo8(gs(F7_NAME(sub)))
55 F7jmp call_ddd
56_ENDF __subdf3
57#endif /* F7MOD_D_sub_ */
58
59;; double __muldf3 (double, double) ; mul
60#ifdef F7MOD_D_mul_
61_DEFUN __muldf3
62 ALIAS __mul
63 .global F7_NAME(mul)
64 ldi ZH, hi8(gs(F7_NAME(mul)))
65 ldi ZL, lo8(gs(F7_NAME(mul)))
66 F7jmp call_ddd
67_ENDF __muldf3
68#endif /* F7MOD_D_mul_ */
69
70;; double __divdf3 (double, double) ; div
71#ifdef F7MOD_D_div_
72_DEFUN __divdf3
73 ALIAS __div
74 .global F7_NAME(div)
75 ldi ZH, hi8(gs(F7_NAME(div)))
76 ldi ZL, lo8(gs(F7_NAME(div)))
77 F7jmp call_ddd
78_ENDF __divdf3
79#endif /* F7MOD_D_div_ */
80
81;; Functions that usually live in libgcc: __<name>df2 for <name> in:
82;; le lt ge gt ne eq unord
83
84;; bool __ledf2 (double, double) ; le
85#ifdef F7MOD_D_le_
86_DEFUN __ledf2
87 .global F7_NAME(le_impl)
88 ldi ZH, hi8(gs(F7_NAME(le_impl)))
89 ldi ZL, lo8(gs(F7_NAME(le_impl)))
90 F7jmp call_xdd
91_ENDF __ledf2
92#endif /* F7MOD_D_le_ */
93
94;; bool __ltdf2 (double, double) ; lt
95#ifdef F7MOD_D_lt_
96_DEFUN __ltdf2
97 .global F7_NAME(lt_impl)
98 ldi ZH, hi8(gs(F7_NAME(lt_impl)))
99 ldi ZL, lo8(gs(F7_NAME(lt_impl)))
100 F7jmp call_xdd
101_ENDF __ltdf2
102#endif /* F7MOD_D_lt_ */
103
104;; bool __gedf2 (double, double) ; ge
105#ifdef F7MOD_D_ge_
106_DEFUN __gedf2
107 .global F7_NAME(ge_impl)
108 ldi ZH, hi8(gs(F7_NAME(ge_impl)))
109 ldi ZL, lo8(gs(F7_NAME(ge_impl)))
110 F7jmp call_xdd
111_ENDF __gedf2
112#endif /* F7MOD_D_ge_ */
113
114;; bool __gtdf2 (double, double) ; gt
115#ifdef F7MOD_D_gt_
116_DEFUN __gtdf2
117 .global F7_NAME(gt_impl)
118 ldi ZH, hi8(gs(F7_NAME(gt_impl)))
119 ldi ZL, lo8(gs(F7_NAME(gt_impl)))
120 F7jmp call_xdd
121_ENDF __gtdf2
122#endif /* F7MOD_D_gt_ */
123
124;; bool __nedf2 (double, double) ; ne
125#ifdef F7MOD_D_ne_
126_DEFUN __nedf2
127 .global F7_NAME(ne_impl)
128 ldi ZH, hi8(gs(F7_NAME(ne_impl)))
129 ldi ZL, lo8(gs(F7_NAME(ne_impl)))
130 F7jmp call_xdd
131_ENDF __nedf2
132#endif /* F7MOD_D_ne_ */
133
134;; bool __eqdf2 (double, double) ; eq
135#ifdef F7MOD_D_eq_
136_DEFUN __eqdf2
137 .global F7_NAME(eq_impl)
138 ldi ZH, hi8(gs(F7_NAME(eq_impl)))
139 ldi ZL, lo8(gs(F7_NAME(eq_impl)))
140 F7jmp call_xdd
141_ENDF __eqdf2
142#endif /* F7MOD_D_eq_ */
143
144;; bool __unorddf2 (double, double) ; unord
145#ifdef F7MOD_D_unord_
146_DEFUN __unorddf2
147 .global F7_NAME(unord_impl)
148 ldi ZH, hi8(gs(F7_NAME(unord_impl)))
149 ldi ZL, lo8(gs(F7_NAME(unord_impl)))
150 F7jmp call_xdd
151_ENDF __unorddf2
152#endif /* F7MOD_D_unord_ */
153
154;; Functions that usually live in libgcc: __<name> for <name> in:
155;; fixdfsi fixdfdi fixunsdfdi fixunsdfsi truncdfsf2
156
157;; type_t __fixdfsi (double) ; fixdfsi
158#ifdef F7MOD_D_fixdfsi_
159_DEFUN __fixdfsi
160 .global F7_NAME(fixdfsi)
161 ldi ZH, hi8(gs(F7_NAME(fixdfsi)))
162 ldi ZL, lo8(gs(F7_NAME(fixdfsi)))
163 F7jmp call_xd
164_ENDF __fixdfsi
165#endif /* F7MOD_D_fixdfsi_ */
166
167;; type_t __fixdfdi (double) ; fixdfdi
168#ifdef F7MOD_D_fixdfdi_
169_DEFUN __fixdfdi
170 .global F7_NAME(fixdfdi)
171 ldi ZH, hi8(gs(F7_NAME(fixdfdi)))
172 ldi ZL, lo8(gs(F7_NAME(fixdfdi)))
173 F7jmp call_xd
174_ENDF __fixdfdi
175#endif /* F7MOD_D_fixdfdi_ */
176
177;; type_t __fixunsdfdi (double) ; fixunsdfdi
178#ifdef F7MOD_D_fixunsdfdi_
179_DEFUN __fixunsdfdi
180 .global F7_NAME(fixunsdfdi)
181 ldi ZH, hi8(gs(F7_NAME(fixunsdfdi)))
182 ldi ZL, lo8(gs(F7_NAME(fixunsdfdi)))
183 F7jmp call_xd
184_ENDF __fixunsdfdi
185#endif /* F7MOD_D_fixunsdfdi_ */
186
187;; type_t __fixunsdfsi (double) ; fixunsdfsi
188#ifdef F7MOD_D_fixunsdfsi_
189_DEFUN __fixunsdfsi
190 .global F7_NAME(fixunsdfsi)
191 ldi ZH, hi8(gs(F7_NAME(fixunsdfsi)))
192 ldi ZL, lo8(gs(F7_NAME(fixunsdfsi)))
193 F7jmp call_xd
194_ENDF __fixunsdfsi
195#endif /* F7MOD_D_fixunsdfsi_ */
196
197;; type_t __truncdfsf2 (double) ; truncdfsf2
198#ifdef F7MOD_D_truncdfsf2_
199_DEFUN __truncdfsf2
200 .global F7_NAME(truncdfsf2)
201 ldi ZH, hi8(gs(F7_NAME(truncdfsf2)))
202 ldi ZL, lo8(gs(F7_NAME(truncdfsf2)))
203 F7jmp call_xd
204_ENDF __truncdfsf2
205#endif /* F7MOD_D_truncdfsf2_ */
206
207;; Functions that usually live in libgcc: __<name> for <name> in:
208;; floatunsidf floatsidf extendsfdf2
209
210;; double __floatunsidf (type_t) ; floatunsidf
211#ifdef F7MOD_D_floatunsidf_
212_DEFUN __floatunsidf
213 .global F7_NAME(floatunsidf)
214 ldi ZH, hi8(gs(F7_NAME(floatunsidf)))
215 ldi ZL, lo8(gs(F7_NAME(floatunsidf)))
216 F7jmp call_dx
217_ENDF __floatunsidf
218#endif /* F7MOD_D_floatunsidf_ */
219
220;; double __floatsidf (type_t) ; floatsidf
221#ifdef F7MOD_D_floatsidf_
222_DEFUN __floatsidf
223 .global F7_NAME(floatsidf)
224 ldi ZH, hi8(gs(F7_NAME(floatsidf)))
225 ldi ZL, lo8(gs(F7_NAME(floatsidf)))
226 F7jmp call_dx
227_ENDF __floatsidf
228#endif /* F7MOD_D_floatsidf_ */
229
230;; double __extendsfdf2 (type_t) ; extendsfdf2
231#ifdef F7MOD_D_extendsfdf2_
232_DEFUN __extendsfdf2
233 .global F7_NAME(extendsfdf2)
234 ldi ZH, hi8(gs(F7_NAME(extendsfdf2)))
235 ldi ZL, lo8(gs(F7_NAME(extendsfdf2)))
236 F7jmp call_dx
237_ENDF __extendsfdf2
238#endif /* F7MOD_D_extendsfdf2_ */
239
240;; Functions that usually live in libm: Depending on [long] double layout,
241;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
242;; pow fmin fmax fmod hypot atan2
243
244;; double __pow (double, double)
245#ifdef F7MOD_D_pow_
246_DEFUN __pow
247 DALIAS pow
248 LALIAS powl
249 .global F7_NAME(pow)
250 ldi ZH, hi8(gs(F7_NAME(pow)))
251 ldi ZL, lo8(gs(F7_NAME(pow)))
252 F7jmp call_ddd
253_ENDF __pow
254#endif /* F7MOD_D_pow_ */
255
256;; double __fmin (double, double)
257#ifdef F7MOD_D_fmin_
258_DEFUN __fmin
259 DALIAS fmin
260 LALIAS fminl
261 .global F7_NAME(fmin)
262 ldi ZH, hi8(gs(F7_NAME(fmin)))
263 ldi ZL, lo8(gs(F7_NAME(fmin)))
264 F7jmp call_ddd
265_ENDF __fmin
266#endif /* F7MOD_D_fmin_ */
267
268;; double __fmax (double, double)
269#ifdef F7MOD_D_fmax_
270_DEFUN __fmax
271 DALIAS fmax
272 LALIAS fmaxl
273 .global F7_NAME(fmax)
274 ldi ZH, hi8(gs(F7_NAME(fmax)))
275 ldi ZL, lo8(gs(F7_NAME(fmax)))
276 F7jmp call_ddd
277_ENDF __fmax
278#endif /* F7MOD_D_fmax_ */
279
280;; double __fmod (double, double)
281#ifdef F7MOD_D_fmod_
282_DEFUN __fmod
283 DALIAS fmod
284 LALIAS fmodl
285 .global F7_NAME(fmod)
286 ldi ZH, hi8(gs(F7_NAME(fmod)))
287 ldi ZL, lo8(gs(F7_NAME(fmod)))
288 F7jmp call_ddd
289_ENDF __fmod
290#endif /* F7MOD_D_fmod_ */
291
292;; double __hypot (double, double)
293#ifdef F7MOD_D_hypot_
294_DEFUN __hypot
295 DALIAS hypot
296 LALIAS hypotl
297 .global F7_NAME(hypot)
298 ldi ZH, hi8(gs(F7_NAME(hypot)))
299 ldi ZL, lo8(gs(F7_NAME(hypot)))
300 F7jmp call_ddd
301_ENDF __hypot
302#endif /* F7MOD_D_hypot_ */
303
304;; double __atan2 (double, double)
305#ifdef F7MOD_D_atan2_
306_DEFUN __atan2
307 DALIAS atan2
308 LALIAS atan2l
309 .global F7_NAME(atan2)
310 ldi ZH, hi8(gs(F7_NAME(atan2)))
311 ldi ZL, lo8(gs(F7_NAME(atan2)))
312 F7jmp call_ddd
313_ENDF __atan2
314#endif /* F7MOD_D_atan2_ */
315
316;; Functions that usually live in libm: Depending on [long] double layout,
317;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
318;; ldexp frexp
319
320;; double __ldexp (double, word_t)
321#ifdef F7MOD_D_ldexp_
322_DEFUN __ldexp
323 DALIAS ldexp
324 LALIAS ldexpl
325 .global F7_NAME(ldexp)
326 ldi ZH, hi8(gs(F7_NAME(ldexp)))
327 ldi ZL, lo8(gs(F7_NAME(ldexp)))
328 F7jmp call_ddx
329_ENDF __ldexp
330#endif /* F7MOD_D_ldexp_ */
331
332;; double __frexp (double, word_t)
333#ifdef F7MOD_D_frexp_
334_DEFUN __frexp
335 DALIAS frexp
336 LALIAS frexpl
337 .global F7_NAME(frexp)
338 ldi ZH, hi8(gs(F7_NAME(frexp)))
339 ldi ZL, lo8(gs(F7_NAME(frexp)))
340 F7jmp call_ddx
341_ENDF __frexp
342#endif /* F7MOD_D_frexp_ */
343
344;; Functions that usually live in libm: Depending on [long] double layout,
345;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
346;; sqrt cbrt exp exp10 pow10 log log10 log2 sin cos tan cotan asin acos atan ceil floor trunc round sinh cosh tanh
347
348;; double __sqrt (double)
349#ifdef F7MOD_D_sqrt_
350_DEFUN __sqrt
351 DALIAS sqrt
352 LALIAS sqrtl
353 .global F7_NAME(sqrt)
354 ldi ZH, hi8(gs(F7_NAME(sqrt)))
355 ldi ZL, lo8(gs(F7_NAME(sqrt)))
356 F7jmp call_dd
357_ENDF __sqrt
358#endif /* F7MOD_D_sqrt_ */
359
360;; double __cbrt (double)
361#ifdef F7MOD_D_cbrt_
362_DEFUN __cbrt
363 DALIAS cbrt
364 LALIAS cbrtl
365 .global F7_NAME(cbrt)
366 ldi ZH, hi8(gs(F7_NAME(cbrt)))
367 ldi ZL, lo8(gs(F7_NAME(cbrt)))
368 F7jmp call_dd
369_ENDF __cbrt
370#endif /* F7MOD_D_cbrt_ */
371
372;; double __exp (double)
373#ifdef F7MOD_D_exp_
374_DEFUN __exp
375 DALIAS exp
376 LALIAS expl
377 .global F7_NAME(exp)
378 ldi ZH, hi8(gs(F7_NAME(exp)))
379 ldi ZL, lo8(gs(F7_NAME(exp)))
380 F7jmp call_dd
381_ENDF __exp
382#endif /* F7MOD_D_exp_ */
383
384;; double __exp10 (double)
385#ifdef F7MOD_D_exp10_
386_DEFUN __exp10
387 DALIAS exp10
388 LALIAS exp10l
389 .global F7_NAME(exp10)
390 ldi ZH, hi8(gs(F7_NAME(exp10)))
391 ldi ZL, lo8(gs(F7_NAME(exp10)))
392 F7jmp call_dd
393_ENDF __exp10
394#endif /* F7MOD_D_exp10_ */
395
396;; double __pow10 (double)
397#ifdef F7MOD_D_pow10_
398_DEFUN __pow10
399 DALIAS pow10
400 LALIAS pow10l
401 .global F7_NAME(pow10)
402 ldi ZH, hi8(gs(F7_NAME(pow10)))
403 ldi ZL, lo8(gs(F7_NAME(pow10)))
404 F7jmp call_dd
405_ENDF __pow10
406#endif /* F7MOD_D_pow10_ */
407
408;; double __log (double)
409#ifdef F7MOD_D_log_
410_DEFUN __log
411 DALIAS log
412 LALIAS logl
413 .global F7_NAME(log)
414 ldi ZH, hi8(gs(F7_NAME(log)))
415 ldi ZL, lo8(gs(F7_NAME(log)))
416 F7jmp call_dd
417_ENDF __log
418#endif /* F7MOD_D_log_ */
419
420;; double __log10 (double)
421#ifdef F7MOD_D_log10_
422_DEFUN __log10
423 DALIAS log10
424 LALIAS log10l
425 .global F7_NAME(log10)
426 ldi ZH, hi8(gs(F7_NAME(log10)))
427 ldi ZL, lo8(gs(F7_NAME(log10)))
428 F7jmp call_dd
429_ENDF __log10
430#endif /* F7MOD_D_log10_ */
431
432;; double __log2 (double)
433#ifdef F7MOD_D_log2_
434_DEFUN __log2
435 DALIAS log2
436 LALIAS log2l
437 .global F7_NAME(log2)
438 ldi ZH, hi8(gs(F7_NAME(log2)))
439 ldi ZL, lo8(gs(F7_NAME(log2)))
440 F7jmp call_dd
441_ENDF __log2
442#endif /* F7MOD_D_log2_ */
443
444;; double __sin (double)
445#ifdef F7MOD_D_sin_
446_DEFUN __sin
447 DALIAS sin
448 LALIAS sinl
449 .global F7_NAME(sin)
450 ldi ZH, hi8(gs(F7_NAME(sin)))
451 ldi ZL, lo8(gs(F7_NAME(sin)))
452 F7jmp call_dd
453_ENDF __sin
454#endif /* F7MOD_D_sin_ */
455
456;; double __cos (double)
457#ifdef F7MOD_D_cos_
458_DEFUN __cos
459 DALIAS cos
460 LALIAS cosl
461 .global F7_NAME(cos)
462 ldi ZH, hi8(gs(F7_NAME(cos)))
463 ldi ZL, lo8(gs(F7_NAME(cos)))
464 F7jmp call_dd
465_ENDF __cos
466#endif /* F7MOD_D_cos_ */
467
468;; double __tan (double)
469#ifdef F7MOD_D_tan_
470_DEFUN __tan
471 DALIAS tan
472 LALIAS tanl
473 .global F7_NAME(tan)
474 ldi ZH, hi8(gs(F7_NAME(tan)))
475 ldi ZL, lo8(gs(F7_NAME(tan)))
476 F7jmp call_dd
477_ENDF __tan
478#endif /* F7MOD_D_tan_ */
479
480;; double __cotan (double)
481#ifdef F7MOD_D_cotan_
482_DEFUN __cotan
483 DALIAS cotan
484 LALIAS cotanl
485 .global F7_NAME(cotan)
486 ldi ZH, hi8(gs(F7_NAME(cotan)))
487 ldi ZL, lo8(gs(F7_NAME(cotan)))
488 F7jmp call_dd
489_ENDF __cotan
490#endif /* F7MOD_D_cotan_ */
491
492;; double __asin (double)
493#ifdef F7MOD_D_asin_
494_DEFUN __asin
495 DALIAS asin
496 LALIAS asinl
497 .global F7_NAME(asin)
498 ldi ZH, hi8(gs(F7_NAME(asin)))
499 ldi ZL, lo8(gs(F7_NAME(asin)))
500 F7jmp call_dd
501_ENDF __asin
502#endif /* F7MOD_D_asin_ */
503
504;; double __acos (double)
505#ifdef F7MOD_D_acos_
506_DEFUN __acos
507 DALIAS acos
508 LALIAS acosl
509 .global F7_NAME(acos)
510 ldi ZH, hi8(gs(F7_NAME(acos)))
511 ldi ZL, lo8(gs(F7_NAME(acos)))
512 F7jmp call_dd
513_ENDF __acos
514#endif /* F7MOD_D_acos_ */
515
516;; double __atan (double)
517#ifdef F7MOD_D_atan_
518_DEFUN __atan
519 DALIAS atan
520 LALIAS atanl
521 .global F7_NAME(atan)
522 ldi ZH, hi8(gs(F7_NAME(atan)))
523 ldi ZL, lo8(gs(F7_NAME(atan)))
524 F7jmp call_dd
525_ENDF __atan
526#endif /* F7MOD_D_atan_ */
527
528;; double __ceil (double)
529#ifdef F7MOD_D_ceil_
530_DEFUN __ceil
531 DALIAS ceil
532 LALIAS ceill
533 .global F7_NAME(ceil)
534 ldi ZH, hi8(gs(F7_NAME(ceil)))
535 ldi ZL, lo8(gs(F7_NAME(ceil)))
536 F7jmp call_dd
537_ENDF __ceil
538#endif /* F7MOD_D_ceil_ */
539
540;; double __floor (double)
541#ifdef F7MOD_D_floor_
542_DEFUN __floor
543 DALIAS floor
544 LALIAS floorl
545 .global F7_NAME(floor)
546 ldi ZH, hi8(gs(F7_NAME(floor)))
547 ldi ZL, lo8(gs(F7_NAME(floor)))
548 F7jmp call_dd
549_ENDF __floor
550#endif /* F7MOD_D_floor_ */
551
552;; double __trunc (double)
553#ifdef F7MOD_D_trunc_
554_DEFUN __trunc
555 DALIAS trunc
556 LALIAS truncl
557 .global F7_NAME(trunc)
558 ldi ZH, hi8(gs(F7_NAME(trunc)))
559 ldi ZL, lo8(gs(F7_NAME(trunc)))
560 F7jmp call_dd
561_ENDF __trunc
562#endif /* F7MOD_D_trunc_ */
563
564;; double __round (double)
565#ifdef F7MOD_D_round_
566_DEFUN __round
567 DALIAS round
568 LALIAS roundl
569 .global F7_NAME(round)
570 ldi ZH, hi8(gs(F7_NAME(round)))
571 ldi ZL, lo8(gs(F7_NAME(round)))
572 F7jmp call_dd
573_ENDF __round
574#endif /* F7MOD_D_round_ */
575
576;; double __sinh (double)
577#ifdef F7MOD_D_sinh_
578_DEFUN __sinh
579 DALIAS sinh
580 LALIAS sinhl
581 .global F7_NAME(sinh)
582 ldi ZH, hi8(gs(F7_NAME(sinh)))
583 ldi ZL, lo8(gs(F7_NAME(sinh)))
584 F7jmp call_dd
585_ENDF __sinh
586#endif /* F7MOD_D_sinh_ */
587
588;; double __cosh (double)
589#ifdef F7MOD_D_cosh_
590_DEFUN __cosh
591 DALIAS cosh
592 LALIAS coshl
593 .global F7_NAME(cosh)
594 ldi ZH, hi8(gs(F7_NAME(cosh)))
595 ldi ZL, lo8(gs(F7_NAME(cosh)))
596 F7jmp call_dd
597_ENDF __cosh
598#endif /* F7MOD_D_cosh_ */
599
600;; double __tanh (double)
601#ifdef F7MOD_D_tanh_
602_DEFUN __tanh
603 DALIAS tanh
604 LALIAS tanhl
605 .global F7_NAME(tanh)
606 ldi ZH, hi8(gs(F7_NAME(tanh)))
607 ldi ZL, lo8(gs(F7_NAME(tanh)))
608 F7jmp call_dd
609_ENDF __tanh
610#endif /* F7MOD_D_tanh_ */
611
612;; Functions that usually live in libm: Depending on [long] double layout,
613;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
614;; lrint lround
615
616;; type_t __lrint (double)
617#ifdef F7MOD_D_lrint_
618_DEFUN __lrint
619 DALIAS lrint
620 LALIAS lrintl
621 .global F7_NAME(lrint)
622 ldi ZH, hi8(gs(F7_NAME(lrint)))
623 ldi ZL, lo8(gs(F7_NAME(lrint)))
624 F7jmp call_xd
625_ENDF __lrint
626#endif /* F7MOD_D_lrint_ */
627
628;; type_t __lround (double)
629#ifdef F7MOD_D_lround_
630_DEFUN __lround
631 DALIAS lround
632 LALIAS lroundl
633 .global F7_NAME(lround)
634 ldi ZH, hi8(gs(F7_NAME(lround)))
635 ldi ZL, lo8(gs(F7_NAME(lround)))
636 F7jmp call_xd
637_ENDF __lround
638#endif /* F7MOD_D_lround_ */