;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
;;
;; This file is part of LIBF7, which is part of GCC.
;;
;; GCC is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free
;; Software Foundation; either version 3, or (at your option) any later
;; version.
;;
;; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
;; WARRANTY; without even the implied warranty of MERCHANTABILITY or
;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
;; for more details.
;;
;; Under Section 7 of GPL version 3, you are granted additional
;; permissions described in the GCC Runtime Library Exception, version
;; 3.1, as published by the Free Software Foundation.
;;
;; You should have received a copy of the GNU General Public License and
;; a copy of the GCC Runtime Library Exception along with this program;
;; see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
;; <http://www.gnu.org/licenses/>.  */

;; Auto-generated file, do not change by hand.
;;
;; Wrappers for double and long double functions to use functions that
;; operate on f7_t, and get f7_t* and const f7_t*.
;;
;; Generated by: f7wraps.sh
;; Included by : libf7-asm.sx
;; WITH_LIBF7_MATH_FUNCTIONS=1
;; WITH_LIBF7_MATH_SYMBOLS=1

;; Functions that usually live in libgcc: __<name>df3 for <name> in:
;; add sub mul div

;; double __adddf3 (double, double)  ; add
#ifdef F7MOD_D_add_
_DEFUN __adddf3
    ALIAS __add
    .global F7_NAME(add)
    ldi     ZH,     hi8(gs(F7_NAME(add)))
    ldi     ZL,     lo8(gs(F7_NAME(add)))
    F7jmp   call_ddd
_ENDF __adddf3
#endif /* F7MOD_D_add_ */

;; double __subdf3 (double, double)  ; sub
#ifdef F7MOD_D_sub_
_DEFUN __subdf3
    ALIAS __sub
    .global F7_NAME(sub)
    ldi     ZH,     hi8(gs(F7_NAME(sub)))
    ldi     ZL,     lo8(gs(F7_NAME(sub)))
    F7jmp   call_ddd
_ENDF __subdf3
#endif /* F7MOD_D_sub_ */

;; double __muldf3 (double, double)  ; mul
#ifdef F7MOD_D_mul_
_DEFUN __muldf3
    ALIAS __mul
    .global F7_NAME(mul)
    ldi     ZH,     hi8(gs(F7_NAME(mul)))
    ldi     ZL,     lo8(gs(F7_NAME(mul)))
    F7jmp   call_ddd
_ENDF __muldf3
#endif /* F7MOD_D_mul_ */

;; double __divdf3 (double, double)  ; div
#ifdef F7MOD_D_div_
_DEFUN __divdf3
    ALIAS __div
    .global F7_NAME(div)
    ldi     ZH,     hi8(gs(F7_NAME(div)))
    ldi     ZL,     lo8(gs(F7_NAME(div)))
    F7jmp   call_ddd
_ENDF __divdf3
#endif /* F7MOD_D_div_ */

;; Functions that usually live in libgcc: __<name>df2 for <name> in:
;; le lt ge gt ne eq unord

;; bool __ledf2 (double, double)  ; le
#ifdef F7MOD_D_le_
_DEFUN __ledf2
    .global F7_NAME(le_impl)
    ldi     ZH,     hi8(gs(F7_NAME(le_impl)))
    ldi     ZL,     lo8(gs(F7_NAME(le_impl)))
    F7jmp   call_xdd
_ENDF __ledf2
#endif /* F7MOD_D_le_ */

;; bool __ltdf2 (double, double)  ; lt
#ifdef F7MOD_D_lt_
_DEFUN __ltdf2
    .global F7_NAME(lt_impl)
    ldi     ZH,     hi8(gs(F7_NAME(lt_impl)))
    ldi     ZL,     lo8(gs(F7_NAME(lt_impl)))
    F7jmp   call_xdd
_ENDF __ltdf2
#endif /* F7MOD_D_lt_ */

;; bool __gedf2 (double, double)  ; ge
#ifdef F7MOD_D_ge_
_DEFUN __gedf2
    .global F7_NAME(ge_impl)
    ldi     ZH,     hi8(gs(F7_NAME(ge_impl)))
    ldi     ZL,     lo8(gs(F7_NAME(ge_impl)))
    F7jmp   call_xdd
_ENDF __gedf2
#endif /* F7MOD_D_ge_ */

;; bool __gtdf2 (double, double)  ; gt
#ifdef F7MOD_D_gt_
_DEFUN __gtdf2
    .global F7_NAME(gt_impl)
    ldi     ZH,     hi8(gs(F7_NAME(gt_impl)))
    ldi     ZL,     lo8(gs(F7_NAME(gt_impl)))
    F7jmp   call_xdd
_ENDF __gtdf2
#endif /* F7MOD_D_gt_ */

;; bool __nedf2 (double, double)  ; ne
#ifdef F7MOD_D_ne_
_DEFUN __nedf2
    .global F7_NAME(ne_impl)
    ldi     ZH,     hi8(gs(F7_NAME(ne_impl)))
    ldi     ZL,     lo8(gs(F7_NAME(ne_impl)))
    F7jmp   call_xdd
_ENDF __nedf2
#endif /* F7MOD_D_ne_ */

;; bool __eqdf2 (double, double)  ; eq
#ifdef F7MOD_D_eq_
_DEFUN __eqdf2
    .global F7_NAME(eq_impl)
    ldi     ZH,     hi8(gs(F7_NAME(eq_impl)))
    ldi     ZL,     lo8(gs(F7_NAME(eq_impl)))
    F7jmp   call_xdd
_ENDF __eqdf2
#endif /* F7MOD_D_eq_ */

;; bool __unorddf2 (double, double)  ; unord
#ifdef F7MOD_D_unord_
_DEFUN __unorddf2
    .global F7_NAME(unord_impl)
    ldi     ZH,     hi8(gs(F7_NAME(unord_impl)))
    ldi     ZL,     lo8(gs(F7_NAME(unord_impl)))
    F7jmp   call_xdd
_ENDF __unorddf2
#endif /* F7MOD_D_unord_ */

;; Functions that usually live in libgcc: __<name> for <name> in:
;; fixdfsi fixdfdi fixunsdfdi fixunsdfsi truncdfsf2

;; type_t __fixdfsi (double)  ; fixdfsi
#ifdef F7MOD_D_fixdfsi_
_DEFUN __fixdfsi
    .global F7_NAME(fixdfsi)
    ldi     ZH,     hi8(gs(F7_NAME(fixdfsi)))
    ldi     ZL,     lo8(gs(F7_NAME(fixdfsi)))
    F7jmp   call_xd
_ENDF __fixdfsi
#endif /* F7MOD_D_fixdfsi_ */

;; type_t __fixdfdi (double)  ; fixdfdi
#ifdef F7MOD_D_fixdfdi_
_DEFUN __fixdfdi
    .global F7_NAME(fixdfdi)
    ldi     ZH,     hi8(gs(F7_NAME(fixdfdi)))
    ldi     ZL,     lo8(gs(F7_NAME(fixdfdi)))
    F7jmp   call_xd
_ENDF __fixdfdi
#endif /* F7MOD_D_fixdfdi_ */

;; type_t __fixunsdfdi (double)  ; fixunsdfdi
#ifdef F7MOD_D_fixunsdfdi_
_DEFUN __fixunsdfdi
    .global F7_NAME(fixunsdfdi)
    ldi     ZH,     hi8(gs(F7_NAME(fixunsdfdi)))
    ldi     ZL,     lo8(gs(F7_NAME(fixunsdfdi)))
    F7jmp   call_xd
_ENDF __fixunsdfdi
#endif /* F7MOD_D_fixunsdfdi_ */

;; type_t __fixunsdfsi (double)  ; fixunsdfsi
#ifdef F7MOD_D_fixunsdfsi_
_DEFUN __fixunsdfsi
    .global F7_NAME(fixunsdfsi)
    ldi     ZH,     hi8(gs(F7_NAME(fixunsdfsi)))
    ldi     ZL,     lo8(gs(F7_NAME(fixunsdfsi)))
    F7jmp   call_xd
_ENDF __fixunsdfsi
#endif /* F7MOD_D_fixunsdfsi_ */

;; type_t __truncdfsf2 (double)  ; truncdfsf2
#ifdef F7MOD_D_truncdfsf2_
_DEFUN __truncdfsf2
    .global F7_NAME(truncdfsf2)
    ldi     ZH,     hi8(gs(F7_NAME(truncdfsf2)))
    ldi     ZL,     lo8(gs(F7_NAME(truncdfsf2)))
    F7jmp   call_xd
_ENDF __truncdfsf2
#endif /* F7MOD_D_truncdfsf2_ */

;; Functions that usually live in libgcc: __<name> for <name> in:
;; floatunsidf floatsidf extendsfdf2

;; double __floatunsidf (type_t)  ; floatunsidf
#ifdef F7MOD_D_floatunsidf_
_DEFUN __floatunsidf
    .global F7_NAME(floatunsidf)
    ldi     ZH,     hi8(gs(F7_NAME(floatunsidf)))
    ldi     ZL,     lo8(gs(F7_NAME(floatunsidf)))
    F7jmp   call_dx
_ENDF __floatunsidf
#endif /* F7MOD_D_floatunsidf_ */

;; double __floatsidf (type_t)  ; floatsidf
#ifdef F7MOD_D_floatsidf_
_DEFUN __floatsidf
    .global F7_NAME(floatsidf)
    ldi     ZH,     hi8(gs(F7_NAME(floatsidf)))
    ldi     ZL,     lo8(gs(F7_NAME(floatsidf)))
    F7jmp   call_dx
_ENDF __floatsidf
#endif /* F7MOD_D_floatsidf_ */

;; double __extendsfdf2 (type_t)  ; extendsfdf2
#ifdef F7MOD_D_extendsfdf2_
_DEFUN __extendsfdf2
    .global F7_NAME(extendsfdf2)
    ldi     ZH,     hi8(gs(F7_NAME(extendsfdf2)))
    ldi     ZL,     lo8(gs(F7_NAME(extendsfdf2)))
    F7jmp   call_dx
_ENDF __extendsfdf2
#endif /* F7MOD_D_extendsfdf2_ */

;; Functions that usually live in libm:  Depending on [long] double layout,
;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
;; pow fmin fmax fmod hypot atan2

;; double __pow (double, double)
#ifdef F7MOD_D_pow_
_DEFUN __pow
    DALIAS pow
    LALIAS powl
    .global F7_NAME(pow)
    ldi     ZH,     hi8(gs(F7_NAME(pow)))
    ldi     ZL,     lo8(gs(F7_NAME(pow)))
    F7jmp   call_ddd
_ENDF __pow
#endif /* F7MOD_D_pow_ */

;; double __fmin (double, double)
#ifdef F7MOD_D_fmin_
_DEFUN __fmin
    DALIAS fmin
    LALIAS fminl
    .global F7_NAME(fmin)
    ldi     ZH,     hi8(gs(F7_NAME(fmin)))
    ldi     ZL,     lo8(gs(F7_NAME(fmin)))
    F7jmp   call_ddd
_ENDF __fmin
#endif /* F7MOD_D_fmin_ */

;; double __fmax (double, double)
#ifdef F7MOD_D_fmax_
_DEFUN __fmax
    DALIAS fmax
    LALIAS fmaxl
    .global F7_NAME(fmax)
    ldi     ZH,     hi8(gs(F7_NAME(fmax)))
    ldi     ZL,     lo8(gs(F7_NAME(fmax)))
    F7jmp   call_ddd
_ENDF __fmax
#endif /* F7MOD_D_fmax_ */

;; double __fmod (double, double)
#ifdef F7MOD_D_fmod_
_DEFUN __fmod
    DALIAS fmod
    LALIAS fmodl
    .global F7_NAME(fmod)
    ldi     ZH,     hi8(gs(F7_NAME(fmod)))
    ldi     ZL,     lo8(gs(F7_NAME(fmod)))
    F7jmp   call_ddd
_ENDF __fmod
#endif /* F7MOD_D_fmod_ */

;; double __hypot (double, double)
#ifdef F7MOD_D_hypot_
_DEFUN __hypot
    DALIAS hypot
    LALIAS hypotl
    .global F7_NAME(hypot)
    ldi     ZH,     hi8(gs(F7_NAME(hypot)))
    ldi     ZL,     lo8(gs(F7_NAME(hypot)))
    F7jmp   call_ddd
_ENDF __hypot
#endif /* F7MOD_D_hypot_ */

;; double __atan2 (double, double)
#ifdef F7MOD_D_atan2_
_DEFUN __atan2
    DALIAS atan2
    LALIAS atan2l
    .global F7_NAME(atan2)
    ldi     ZH,     hi8(gs(F7_NAME(atan2)))
    ldi     ZL,     lo8(gs(F7_NAME(atan2)))
    F7jmp   call_ddd
_ENDF __atan2
#endif /* F7MOD_D_atan2_ */

;; Functions that usually live in libm:  Depending on [long] double layout,
;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
;; ldexp frexp

;; double __ldexp (double, word_t)
#ifdef F7MOD_D_ldexp_
_DEFUN __ldexp
    DALIAS ldexp
    LALIAS ldexpl
    .global F7_NAME(ldexp)
    ldi     ZH,     hi8(gs(F7_NAME(ldexp)))
    ldi     ZL,     lo8(gs(F7_NAME(ldexp)))
    F7jmp   call_ddx
_ENDF __ldexp
#endif /* F7MOD_D_ldexp_ */

;; double __frexp (double, word_t)
#ifdef F7MOD_D_frexp_
_DEFUN __frexp
    DALIAS frexp
    LALIAS frexpl
    .global F7_NAME(frexp)
    ldi     ZH,     hi8(gs(F7_NAME(frexp)))
    ldi     ZL,     lo8(gs(F7_NAME(frexp)))
    F7jmp   call_ddx
_ENDF __frexp
#endif /* F7MOD_D_frexp_ */

;; Functions that usually live in libm:  Depending on [long] double layout,
;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
;; sqrt cbrt exp exp10 pow10 log log10 log2 sin cos tan cotan asin acos atan ceil floor trunc round sinh cosh tanh

;; double __sqrt (double)
#ifdef F7MOD_D_sqrt_
_DEFUN __sqrt
    DALIAS sqrt
    LALIAS sqrtl
    .global F7_NAME(sqrt)
    ldi     ZH,     hi8(gs(F7_NAME(sqrt)))
    ldi     ZL,     lo8(gs(F7_NAME(sqrt)))
    F7jmp   call_dd
_ENDF __sqrt
#endif /* F7MOD_D_sqrt_ */

;; double __cbrt (double)
#ifdef F7MOD_D_cbrt_
_DEFUN __cbrt
    DALIAS cbrt
    LALIAS cbrtl
    .global F7_NAME(cbrt)
    ldi     ZH,     hi8(gs(F7_NAME(cbrt)))
    ldi     ZL,     lo8(gs(F7_NAME(cbrt)))
    F7jmp   call_dd
_ENDF __cbrt
#endif /* F7MOD_D_cbrt_ */

;; double __exp (double)
#ifdef F7MOD_D_exp_
_DEFUN __exp
    DALIAS exp
    LALIAS expl
    .global F7_NAME(exp)
    ldi     ZH,     hi8(gs(F7_NAME(exp)))
    ldi     ZL,     lo8(gs(F7_NAME(exp)))
    F7jmp   call_dd
_ENDF __exp
#endif /* F7MOD_D_exp_ */

;; double __exp10 (double)
#ifdef F7MOD_D_exp10_
_DEFUN __exp10
    DALIAS exp10
    LALIAS exp10l
    .global F7_NAME(exp10)
    ldi     ZH,     hi8(gs(F7_NAME(exp10)))
    ldi     ZL,     lo8(gs(F7_NAME(exp10)))
    F7jmp   call_dd
_ENDF __exp10
#endif /* F7MOD_D_exp10_ */

;; double __pow10 (double)
#ifdef F7MOD_D_pow10_
_DEFUN __pow10
    DALIAS pow10
    LALIAS pow10l
    .global F7_NAME(pow10)
    ldi     ZH,     hi8(gs(F7_NAME(pow10)))
    ldi     ZL,     lo8(gs(F7_NAME(pow10)))
    F7jmp   call_dd
_ENDF __pow10
#endif /* F7MOD_D_pow10_ */

;; double __log (double)
#ifdef F7MOD_D_log_
_DEFUN __log
    DALIAS log
    LALIAS logl
    .global F7_NAME(log)
    ldi     ZH,     hi8(gs(F7_NAME(log)))
    ldi     ZL,     lo8(gs(F7_NAME(log)))
    F7jmp   call_dd
_ENDF __log
#endif /* F7MOD_D_log_ */

;; double __log10 (double)
#ifdef F7MOD_D_log10_
_DEFUN __log10
    DALIAS log10
    LALIAS log10l
    .global F7_NAME(log10)
    ldi     ZH,     hi8(gs(F7_NAME(log10)))
    ldi     ZL,     lo8(gs(F7_NAME(log10)))
    F7jmp   call_dd
_ENDF __log10
#endif /* F7MOD_D_log10_ */

;; double __log2 (double)
#ifdef F7MOD_D_log2_
_DEFUN __log2
    DALIAS log2
    LALIAS log2l
    .global F7_NAME(log2)
    ldi     ZH,     hi8(gs(F7_NAME(log2)))
    ldi     ZL,     lo8(gs(F7_NAME(log2)))
    F7jmp   call_dd
_ENDF __log2
#endif /* F7MOD_D_log2_ */

;; double __sin (double)
#ifdef F7MOD_D_sin_
_DEFUN __sin
    DALIAS sin
    LALIAS sinl
    .global F7_NAME(sin)
    ldi     ZH,     hi8(gs(F7_NAME(sin)))
    ldi     ZL,     lo8(gs(F7_NAME(sin)))
    F7jmp   call_dd
_ENDF __sin
#endif /* F7MOD_D_sin_ */

;; double __cos (double)
#ifdef F7MOD_D_cos_
_DEFUN __cos
    DALIAS cos
    LALIAS cosl
    .global F7_NAME(cos)
    ldi     ZH,     hi8(gs(F7_NAME(cos)))
    ldi     ZL,     lo8(gs(F7_NAME(cos)))
    F7jmp   call_dd
_ENDF __cos
#endif /* F7MOD_D_cos_ */

;; double __tan (double)
#ifdef F7MOD_D_tan_
_DEFUN __tan
    DALIAS tan
    LALIAS tanl
    .global F7_NAME(tan)
    ldi     ZH,     hi8(gs(F7_NAME(tan)))
    ldi     ZL,     lo8(gs(F7_NAME(tan)))
    F7jmp   call_dd
_ENDF __tan
#endif /* F7MOD_D_tan_ */

;; double __cotan (double)
#ifdef F7MOD_D_cotan_
_DEFUN __cotan
    DALIAS cotan
    LALIAS cotanl
    .global F7_NAME(cotan)
    ldi     ZH,     hi8(gs(F7_NAME(cotan)))
    ldi     ZL,     lo8(gs(F7_NAME(cotan)))
    F7jmp   call_dd
_ENDF __cotan
#endif /* F7MOD_D_cotan_ */

;; double __asin (double)
#ifdef F7MOD_D_asin_
_DEFUN __asin
    DALIAS asin
    LALIAS asinl
    .global F7_NAME(asin)
    ldi     ZH,     hi8(gs(F7_NAME(asin)))
    ldi     ZL,     lo8(gs(F7_NAME(asin)))
    F7jmp   call_dd
_ENDF __asin
#endif /* F7MOD_D_asin_ */

;; double __acos (double)
#ifdef F7MOD_D_acos_
_DEFUN __acos
    DALIAS acos
    LALIAS acosl
    .global F7_NAME(acos)
    ldi     ZH,     hi8(gs(F7_NAME(acos)))
    ldi     ZL,     lo8(gs(F7_NAME(acos)))
    F7jmp   call_dd
_ENDF __acos
#endif /* F7MOD_D_acos_ */

;; double __atan (double)
#ifdef F7MOD_D_atan_
_DEFUN __atan
    DALIAS atan
    LALIAS atanl
    .global F7_NAME(atan)
    ldi     ZH,     hi8(gs(F7_NAME(atan)))
    ldi     ZL,     lo8(gs(F7_NAME(atan)))
    F7jmp   call_dd
_ENDF __atan
#endif /* F7MOD_D_atan_ */

;; double __ceil (double)
#ifdef F7MOD_D_ceil_
_DEFUN __ceil
    DALIAS ceil
    LALIAS ceill
    .global F7_NAME(ceil)
    ldi     ZH,     hi8(gs(F7_NAME(ceil)))
    ldi     ZL,     lo8(gs(F7_NAME(ceil)))
    F7jmp   call_dd
_ENDF __ceil
#endif /* F7MOD_D_ceil_ */

;; double __floor (double)
#ifdef F7MOD_D_floor_
_DEFUN __floor
    DALIAS floor
    LALIAS floorl
    .global F7_NAME(floor)
    ldi     ZH,     hi8(gs(F7_NAME(floor)))
    ldi     ZL,     lo8(gs(F7_NAME(floor)))
    F7jmp   call_dd
_ENDF __floor
#endif /* F7MOD_D_floor_ */

;; double __trunc (double)
#ifdef F7MOD_D_trunc_
_DEFUN __trunc
    DALIAS trunc
    LALIAS truncl
    .global F7_NAME(trunc)
    ldi     ZH,     hi8(gs(F7_NAME(trunc)))
    ldi     ZL,     lo8(gs(F7_NAME(trunc)))
    F7jmp   call_dd
_ENDF __trunc
#endif /* F7MOD_D_trunc_ */

;; double __round (double)
#ifdef F7MOD_D_round_
_DEFUN __round
    DALIAS round
    LALIAS roundl
    .global F7_NAME(round)
    ldi     ZH,     hi8(gs(F7_NAME(round)))
    ldi     ZL,     lo8(gs(F7_NAME(round)))
    F7jmp   call_dd
_ENDF __round
#endif /* F7MOD_D_round_ */

;; double __sinh (double)
#ifdef F7MOD_D_sinh_
_DEFUN __sinh
    DALIAS sinh
    LALIAS sinhl
    .global F7_NAME(sinh)
    ldi     ZH,     hi8(gs(F7_NAME(sinh)))
    ldi     ZL,     lo8(gs(F7_NAME(sinh)))
    F7jmp   call_dd
_ENDF __sinh
#endif /* F7MOD_D_sinh_ */

;; double __cosh (double)
#ifdef F7MOD_D_cosh_
_DEFUN __cosh
    DALIAS cosh
    LALIAS coshl
    .global F7_NAME(cosh)
    ldi     ZH,     hi8(gs(F7_NAME(cosh)))
    ldi     ZL,     lo8(gs(F7_NAME(cosh)))
    F7jmp   call_dd
_ENDF __cosh
#endif /* F7MOD_D_cosh_ */

;; double __tanh (double)
#ifdef F7MOD_D_tanh_
_DEFUN __tanh
    DALIAS tanh
    LALIAS tanhl
    .global F7_NAME(tanh)
    ldi     ZH,     hi8(gs(F7_NAME(tanh)))
    ldi     ZL,     lo8(gs(F7_NAME(tanh)))
    F7jmp   call_dd
_ENDF __tanh
#endif /* F7MOD_D_tanh_ */

;; Functions that usually live in libm:  Depending on [long] double layout,
;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
;; lrint lround

;; type_t __lrint (double)
#ifdef F7MOD_D_lrint_
_DEFUN __lrint
    DALIAS lrint
    LALIAS lrintl
    .global F7_NAME(lrint)
    ldi     ZH,     hi8(gs(F7_NAME(lrint)))
    ldi     ZL,     lo8(gs(F7_NAME(lrint)))
    F7jmp   call_xd
_ENDF __lrint
#endif /* F7MOD_D_lrint_ */

;; type_t __lround (double)
#ifdef F7MOD_D_lround_
_DEFUN __lround
    DALIAS lround
    LALIAS lroundl
    .global F7_NAME(lround)
    ldi     ZH,     hi8(gs(F7_NAME(lround)))
    ldi     ZL,     lo8(gs(F7_NAME(lround)))
    F7jmp   call_xd
_ENDF __lround
#endif /* F7MOD_D_lround_ */
