#!/usr/bin/env sh # The first command argument $1 tells us which flavour to generate for # the rest of the command line arguments. what=$1 shift if [ "x$*" = "x" ]; then none="(none)" fi case ${what} in header) cat << EOF ;; Copyright (C) 2019-2020 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 ;; . */ ;; 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: `basename $0` ;; Included by : libf7-asm.sx EOF for n in $*; do echo ";; $n" done ;; xd_libgcc) cat << EOF ;; Functions that usually live in libgcc: __ for in: ;; $*${none} EOF for n in $*; do cat << EOF ;; type_t __${n} (double) ; $n #ifdef F7MOD_D_${n}_ _DEFUN __${n} .global F7_NAME($n) ldi ZH, hi8(gs(F7_NAME($n))) ldi ZL, lo8(gs(F7_NAME($n))) F7jmp call_xd _ENDF __${n} #endif /* F7MOD_D_${n}_ */ EOF done ;; dx_libgcc) cat << EOF ;; Functions that usually live in libgcc: __ for in: ;; $*${none} EOF for n in $*; do cat << EOF ;; double __${n} (type_t) ; $n #ifdef F7MOD_D_${n}_ _DEFUN __${n} .global F7_NAME($n) ldi ZH, hi8(gs(F7_NAME($n))) ldi ZL, lo8(gs(F7_NAME($n))) F7jmp call_dx _ENDF __${n} #endif /* F7MOD_D_${n}_ */ EOF done ;; ddd_libgcc) cat << EOF ;; Functions that usually live in libgcc: __df3 for in: ;; $*${none} EOF for n in $*; do cat << EOF ;; double __${n}df3 (double, double) ; $n #ifdef F7MOD_D_${n}_ _DEFUN __${n}df3 ALIAS __$n .global F7_NAME($n) ldi ZH, hi8(gs(F7_NAME($n))) ldi ZL, lo8(gs(F7_NAME($n))) F7jmp call_ddd _ENDF __${n}df3 #endif /* F7MOD_D_${n}_ */ EOF done ;; xdd_libgcc_cmp) cat << EOF ;; Functions that usually live in libgcc: __df2 for in: ;; $*${none} EOF for n in $*; do cat << EOF ;; bool __${n}df2 (double, double) ; $n #ifdef F7MOD_D_${n}_ _DEFUN __${n}df2 .global F7_NAME(${n}_impl) ldi ZH, hi8(gs(F7_NAME(${n}_impl))) ldi ZL, lo8(gs(F7_NAME(${n}_impl))) F7jmp call_xdd _ENDF __${n}df2 #endif /* F7MOD_D_${n}_ */ EOF done ;; dd_math) cat << EOF ;; Functions that usually live in libm: Depending on [long] double layout, ;; define and l as weak alias(es) of __ for in: ;; $*${none} EOF for n in $*; do cat << EOF ;; double __${n} (double) #ifdef F7MOD_D_${n}_ _DEFUN __${n} DALIAS $n LALIAS ${n}l .global F7_NAME($n) ldi ZH, hi8(gs(F7_NAME($n))) ldi ZL, lo8(gs(F7_NAME($n))) F7jmp call_dd _ENDF __${n} #endif /* F7MOD_D_${n}_ */ EOF done ;; xd_math) cat << EOF ;; Functions that usually live in libm: Depending on [long] double layout, ;; define and l as weak alias(es) of __ for in: ;; $*${none} EOF for n in $*; do cat << EOF ;; type_t __${n} (double) #ifdef F7MOD_D_${n}_ _DEFUN __${n} DALIAS $n LALIAS ${n}l .global F7_NAME($n) ldi ZH, hi8(gs(F7_NAME($n))) ldi ZL, lo8(gs(F7_NAME($n))) F7jmp call_xd _ENDF __${n} #endif /* F7MOD_D_${n}_ */ EOF done ;; ddd_math) cat << EOF ;; Functions that usually live in libm: Depending on [long] double layout, ;; define and l as weak alias(es) of __ for in: ;; $*${none} EOF for n in $*; do cat << EOF ;; double __${n} (double, double) #ifdef F7MOD_D_${n}_ _DEFUN __${n} DALIAS $n LALIAS ${n}l .global F7_NAME($n) ldi ZH, hi8(gs(F7_NAME($n))) ldi ZL, lo8(gs(F7_NAME($n))) F7jmp call_ddd _ENDF __${n} #endif /* F7MOD_D_${n}_ */ EOF done ;; ddx_math) cat << EOF ;; Functions that usually live in libm: Depending on [long] double layout, ;; define and l as weak alias(es) of __ for in: ;; $*${none} EOF for n in $*; do cat << EOF ;; double __${n} (double, word_t) #ifdef F7MOD_D_${n}_ _DEFUN __${n} DALIAS $n LALIAS ${n}l .global F7_NAME($n) ldi ZH, hi8(gs(F7_NAME($n))) ldi ZL, lo8(gs(F7_NAME($n))) F7jmp call_ddx _ENDF __${n} #endif /* F7MOD_D_${n}_ */ EOF done ;; *) exit 1 ;; esac