f7wraps.sh revision 1.1 1 #!/usr/bin/env sh
2
3 # The first command argument $1 tells us which flavour to generate for
4 # the rest of the command line arguments.
5
6 what=$1
7 shift
8
9 if [ "x$*" = "x" ]; then
10 none="(none)"
11 fi
12
13 case ${what} in
14 header)
15 cat << EOF
16 ;; Copyright (C) 2019-2020 Free Software Foundation, Inc.
17 ;;
18 ;; This file is part of LIBF7, which is part of GCC.
19 ;;
20 ;; GCC is free software; you can redistribute it and/or modify it under
21 ;; the terms of the GNU General Public License as published by the Free
22 ;; Software Foundation; either version 3, or (at your option) any later
23 ;; version.
24 ;;
25 ;; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
26 ;; WARRANTY; without even the implied warranty of MERCHANTABILITY or
27 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
28 ;; for more details.
29 ;;
30 ;; Under Section 7 of GPL version 3, you are granted additional
31 ;; permissions described in the GCC Runtime Library Exception, version
32 ;; 3.1, as published by the Free Software Foundation.
33 ;;
34 ;; You should have received a copy of the GNU General Public License and
35 ;; a copy of the GCC Runtime Library Exception along with this program;
36 ;; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
37 ;; <http://www.gnu.org/licenses/>. */
38
39 ;; Auto-generated file, do not change by hand.
40 ;;
41 ;; Wrappers for double and long double functions to use functions that
42 ;; operate on f7_t, and get f7_t* and const f7_t*.
43 ;;
44 ;; Generated by: `basename $0`
45 ;; Included by : libf7-asm.sx
46 EOF
47 for n in $*; do
48 echo ";; $n"
49 done
50 ;;
51
52 xd_libgcc)
53 cat << EOF
54
55 ;; Functions that usually live in libgcc: __<name> for <name> in:
56 ;; $*${none}
57 EOF
58 for n in $*; do
59 cat << EOF
60
61 ;; type_t __${n} (double) ; $n
62 #ifdef F7MOD_D_${n}_
63 _DEFUN __${n}
64 .global F7_NAME($n)
65 ldi ZH, hi8(gs(F7_NAME($n)))
66 ldi ZL, lo8(gs(F7_NAME($n)))
67 F7jmp call_xd
68 _ENDF __${n}
69 #endif /* F7MOD_D_${n}_ */
70 EOF
71 done
72 ;;
73
74 dx_libgcc)
75 cat << EOF
76
77 ;; Functions that usually live in libgcc: __<name> for <name> in:
78 ;; $*${none}
79 EOF
80 for n in $*; do
81 cat << EOF
82
83 ;; double __${n} (type_t) ; $n
84 #ifdef F7MOD_D_${n}_
85 _DEFUN __${n}
86 .global F7_NAME($n)
87 ldi ZH, hi8(gs(F7_NAME($n)))
88 ldi ZL, lo8(gs(F7_NAME($n)))
89 F7jmp call_dx
90 _ENDF __${n}
91 #endif /* F7MOD_D_${n}_ */
92 EOF
93 done
94 ;;
95
96 ddd_libgcc)
97 cat << EOF
98
99 ;; Functions that usually live in libgcc: __<name>df3 for <name> in:
100 ;; $*${none}
101 EOF
102 for n in $*; do
103 cat << EOF
104
105 ;; double __${n}df3 (double, double) ; $n
106 #ifdef F7MOD_D_${n}_
107 _DEFUN __${n}df3
108 ALIAS __$n
109 .global F7_NAME($n)
110 ldi ZH, hi8(gs(F7_NAME($n)))
111 ldi ZL, lo8(gs(F7_NAME($n)))
112 F7jmp call_ddd
113 _ENDF __${n}df3
114 #endif /* F7MOD_D_${n}_ */
115 EOF
116 done
117 ;;
118
119 xdd_libgcc_cmp)
120 cat << EOF
121
122 ;; Functions that usually live in libgcc: __<name>df2 for <name> in:
123 ;; $*${none}
124 EOF
125 for n in $*; do
126 cat << EOF
127
128 ;; bool __${n}df2 (double, double) ; $n
129 #ifdef F7MOD_D_${n}_
130 _DEFUN __${n}df2
131 .global F7_NAME(${n}_impl)
132 ldi ZH, hi8(gs(F7_NAME(${n}_impl)))
133 ldi ZL, lo8(gs(F7_NAME(${n}_impl)))
134 F7jmp call_xdd
135 _ENDF __${n}df2
136 #endif /* F7MOD_D_${n}_ */
137 EOF
138 done
139 ;;
140
141 dd_math)
142 cat << EOF
143
144 ;; Functions that usually live in libm: Depending on [long] double layout,
145 ;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
146 ;; $*${none}
147 EOF
148 for n in $*; do
149 cat << EOF
150
151 ;; double __${n} (double)
152 #ifdef F7MOD_D_${n}_
153 _DEFUN __${n}
154 DALIAS $n
155 LALIAS ${n}l
156 .global F7_NAME($n)
157 ldi ZH, hi8(gs(F7_NAME($n)))
158 ldi ZL, lo8(gs(F7_NAME($n)))
159 F7jmp call_dd
160 _ENDF __${n}
161 #endif /* F7MOD_D_${n}_ */
162 EOF
163 done
164 ;;
165
166 xd_math)
167 cat << EOF
168
169 ;; Functions that usually live in libm: Depending on [long] double layout,
170 ;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
171 ;; $*${none}
172 EOF
173 for n in $*; do
174 cat << EOF
175
176 ;; type_t __${n} (double)
177 #ifdef F7MOD_D_${n}_
178 _DEFUN __${n}
179 DALIAS $n
180 LALIAS ${n}l
181 .global F7_NAME($n)
182 ldi ZH, hi8(gs(F7_NAME($n)))
183 ldi ZL, lo8(gs(F7_NAME($n)))
184 F7jmp call_xd
185 _ENDF __${n}
186 #endif /* F7MOD_D_${n}_ */
187 EOF
188 done
189 ;;
190
191 ddd_math)
192 cat << EOF
193
194 ;; Functions that usually live in libm: Depending on [long] double layout,
195 ;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
196 ;; $*${none}
197 EOF
198 for n in $*; do
199 cat << EOF
200
201 ;; double __${n} (double, double)
202 #ifdef F7MOD_D_${n}_
203 _DEFUN __${n}
204 DALIAS $n
205 LALIAS ${n}l
206 .global F7_NAME($n)
207 ldi ZH, hi8(gs(F7_NAME($n)))
208 ldi ZL, lo8(gs(F7_NAME($n)))
209 F7jmp call_ddd
210 _ENDF __${n}
211 #endif /* F7MOD_D_${n}_ */
212 EOF
213 done
214 ;;
215
216 ddx_math)
217 cat << EOF
218
219 ;; Functions that usually live in libm: Depending on [long] double layout,
220 ;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
221 ;; $*${none}
222 EOF
223 for n in $*; do
224 cat << EOF
225
226 ;; double __${n} (double, word_t)
227 #ifdef F7MOD_D_${n}_
228 _DEFUN __${n}
229 DALIAS $n
230 LALIAS ${n}l
231 .global F7_NAME($n)
232 ldi ZH, hi8(gs(F7_NAME($n)))
233 ldi ZL, lo8(gs(F7_NAME($n)))
234 F7jmp call_ddx
235 _ENDF __${n}
236 #endif /* F7MOD_D_${n}_ */
237 EOF
238 done
239 ;;
240
241 *)
242 exit 1
243 ;;
244 esac
245