]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/m2/target-independent/Builtins.texi
Merge modula-2 front end onto gcc.
[thirdparty/gcc.git] / gcc / m2 / target-independent / Builtins.texi
1
2 @example
3 DEFINITION MODULE Builtins ;
4
5 FROM SYSTEM IMPORT ADDRESS ;
6
7 (* floating point intrinsic procedure functions *)
8
9 @findex isfinitef
10 PROCEDURE __BUILTIN__ isfinitef (x: SHORTREAL) : BOOLEAN ;
11 @findex isfinite
12 PROCEDURE __BUILTIN__ isfinite (x: REAL) : BOOLEAN ;
13 @findex isfinitel
14 PROCEDURE __BUILTIN__ isfinitel (x: LONGREAL) : BOOLEAN ;
15
16 @findex sinf
17 PROCEDURE __BUILTIN__ sinf (x: SHORTREAL) : SHORTREAL ;
18 @findex sin
19 PROCEDURE __BUILTIN__ sin (x: REAL) : REAL ;
20 @findex sinl
21 PROCEDURE __BUILTIN__ sinl (x: LONGREAL) : LONGREAL ;
22
23 @findex cosf
24 PROCEDURE __BUILTIN__ cosf (x: SHORTREAL) : SHORTREAL ;
25 @findex cos
26 PROCEDURE __BUILTIN__ cos (x: REAL) : REAL ;
27 @findex cosl
28 PROCEDURE __BUILTIN__ cosl (x: LONGREAL) : LONGREAL ;
29
30 @findex sqrtf
31 PROCEDURE __BUILTIN__ sqrtf (x: SHORTREAL) : SHORTREAL ;
32 @findex sqrt
33 PROCEDURE __BUILTIN__ sqrt (x: REAL) : REAL ;
34 @findex sqrtl
35 PROCEDURE __BUILTIN__ sqrtl (x: LONGREAL) : LONGREAL ;
36
37 @findex atan2f
38 PROCEDURE __BUILTIN__ atan2f (x, y: SHORTREAL) : SHORTREAL ;
39 @findex atan2
40 PROCEDURE __BUILTIN__ atan2 (x, y: REAL) : REAL ;
41 @findex atan2l
42 PROCEDURE __BUILTIN__ atan2l (x, y: LONGREAL) : LONGREAL ;
43
44 @findex fabsf
45 PROCEDURE __BUILTIN__ fabsf (x: SHORTREAL) : SHORTREAL ;
46 @findex fabs
47 PROCEDURE __BUILTIN__ fabs (x: REAL) : REAL ;
48 @findex fabsl
49 PROCEDURE __BUILTIN__ fabsl (x: LONGREAL) : LONGREAL ;
50
51 @findex logf
52 PROCEDURE __BUILTIN__ logf (x: SHORTREAL) : SHORTREAL ;
53 @findex log
54 PROCEDURE __BUILTIN__ log (x: REAL) : REAL ;
55 @findex logl
56 PROCEDURE __BUILTIN__ logl (x: LONGREAL) : LONGREAL ;
57
58 @findex expf
59 PROCEDURE __BUILTIN__ expf (x: SHORTREAL) : SHORTREAL ;
60 @findex exp
61 PROCEDURE __BUILTIN__ exp (x: REAL) : REAL ;
62 @findex expl
63 PROCEDURE __BUILTIN__ expl (x: LONGREAL) : LONGREAL ;
64
65 @findex log10f
66 PROCEDURE __BUILTIN__ log10f (x: SHORTREAL) : SHORTREAL ;
67 @findex log10
68 PROCEDURE __BUILTIN__ log10 (x: REAL) : REAL ;
69 @findex log10l
70 PROCEDURE __BUILTIN__ log10l (x: LONGREAL) : LONGREAL ;
71
72 @findex exp10f
73 PROCEDURE __BUILTIN__ exp10f (x: SHORTREAL) : SHORTREAL ;
74 @findex exp10
75 PROCEDURE __BUILTIN__ exp10 (x: REAL) : REAL ;
76 @findex exp10l
77 PROCEDURE __BUILTIN__ exp10l (x: LONGREAL) : LONGREAL ;
78
79 @findex ilogbf
80 PROCEDURE __BUILTIN__ ilogbf (x: SHORTREAL) : INTEGER ;
81 @findex ilogb
82 PROCEDURE __BUILTIN__ ilogb (x: REAL) : INTEGER ;
83 @findex ilogbl
84 PROCEDURE __BUILTIN__ ilogbl (x: LONGREAL) : INTEGER ;
85
86 @findex huge_val
87 PROCEDURE __BUILTIN__ huge_val () : REAL ;
88 @findex huge_valf
89 PROCEDURE __BUILTIN__ huge_valf () : SHORTREAL ;
90 @findex huge_vall
91 PROCEDURE __BUILTIN__ huge_vall () : LONGREAL ;
92
93 @findex significand
94 PROCEDURE __BUILTIN__ significand (r: REAL) : REAL ;
95 @findex significandf
96 PROCEDURE __BUILTIN__ significandf (s: SHORTREAL) : SHORTREAL ;
97 @findex significandl
98 PROCEDURE __BUILTIN__ significandl (l: LONGREAL) : LONGREAL ;
99
100 @findex modf
101 PROCEDURE __BUILTIN__ modf (x: REAL; VAR y: REAL) : REAL ;
102 @findex modff
103 PROCEDURE __BUILTIN__ modff (x: SHORTREAL;
104 VAR y: SHORTREAL) : SHORTREAL ;
105 @findex modfl
106 PROCEDURE __BUILTIN__ modfl (x: LONGREAL; VAR y: LONGREAL) : LONGREAL ;
107
108 @findex signbit
109 PROCEDURE __BUILTIN__ signbit (r: REAL) : INTEGER ;
110 @findex signbitf
111 PROCEDURE __BUILTIN__ signbitf (s: SHORTREAL) : INTEGER ;
112 @findex signbitl
113 PROCEDURE __BUILTIN__ signbitl (l: LONGREAL) : INTEGER ;
114
115 @findex nextafter
116 PROCEDURE __BUILTIN__ nextafter (x, y: REAL) : REAL ;
117 @findex nextafterf
118 PROCEDURE __BUILTIN__ nextafterf (x, y: SHORTREAL) : SHORTREAL ;
119 @findex nextafterl
120 PROCEDURE __BUILTIN__ nextafterl (x, y: LONGREAL) : LONGREAL ;
121
122 @findex nexttoward
123 PROCEDURE __BUILTIN__ nexttoward (x, y: REAL) : LONGREAL ;
124 @findex nexttowardf
125 PROCEDURE __BUILTIN__ nexttowardf (x, y: SHORTREAL) : LONGREAL ;
126 @findex nexttowardl
127 PROCEDURE __BUILTIN__ nexttowardl (x, y: LONGREAL) : LONGREAL ;
128
129 @findex scalb
130 PROCEDURE __BUILTIN__ scalb (x, n: REAL) : REAL ;
131 @findex scalbf
132 PROCEDURE __BUILTIN__ scalbf (x, n: SHORTREAL) : SHORTREAL ;
133 @findex scalbl
134 PROCEDURE __BUILTIN__ scalbl (x, n: LONGREAL) : LONGREAL ;
135
136 @findex scalbln
137 PROCEDURE __BUILTIN__ scalbln (x: REAL; n: LONGINT) : REAL ;
138 @findex scalblnf
139 PROCEDURE __BUILTIN__ scalblnf (x: SHORTREAL; n: LONGINT) : SHORTREAL ;
140 @findex scalblnl
141 PROCEDURE __BUILTIN__ scalblnl (x: LONGREAL; n: LONGINT) : LONGREAL ;
142
143 @findex scalbn
144 PROCEDURE __BUILTIN__ scalbn (x: REAL; n: INTEGER) : REAL ;
145 @findex scalbnf
146 PROCEDURE __BUILTIN__ scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ;
147 @findex scalbnl
148 PROCEDURE __BUILTIN__ scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ;
149
150 (* complex arithmetic intrincic procedure functions *)
151
152 @findex cabsf
153 PROCEDURE __BUILTIN__ cabsf (z: SHORTCOMPLEX) : SHORTREAL ;
154 @findex cabs
155 PROCEDURE __BUILTIN__ cabs (z: COMPLEX) : REAL ;
156 @findex cabsl
157 PROCEDURE __BUILTIN__ cabsl (z: LONGCOMPLEX) : LONGREAL ;
158
159 @findex cargf
160 PROCEDURE __BUILTIN__ cargf (z: SHORTCOMPLEX) : SHORTREAL ;
161 @findex carg
162 PROCEDURE __BUILTIN__ carg (z: COMPLEX) : REAL ;
163 @findex cargl
164 PROCEDURE __BUILTIN__ cargl (z: LONGCOMPLEX) : LONGREAL ;
165
166 @findex conjf
167 PROCEDURE __BUILTIN__ conjf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
168 @findex conj
169 PROCEDURE __BUILTIN__ conj (z: COMPLEX) : COMPLEX ;
170 @findex conjl
171 PROCEDURE __BUILTIN__ conjl (z: LONGCOMPLEX) : LONGCOMPLEX ;
172
173 @findex cpowerf
174 PROCEDURE __BUILTIN__ cpowerf (base: SHORTCOMPLEX;
175 exp: SHORTREAL) : SHORTCOMPLEX ;
176 @findex cpower
177 PROCEDURE __BUILTIN__ cpower (base: COMPLEX; exp: REAL) : COMPLEX ;
178 @findex cpowerl
179 PROCEDURE __BUILTIN__ cpowerl (base: LONGCOMPLEX;
180 exp: LONGREAL) : LONGCOMPLEX ;
181
182 @findex csqrtf
183 PROCEDURE __BUILTIN__ csqrtf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
184 @findex csqrt
185 PROCEDURE __BUILTIN__ csqrt (z: COMPLEX) : COMPLEX ;
186 @findex csqrtl
187 PROCEDURE __BUILTIN__ csqrtl (z: LONGCOMPLEX) : LONGCOMPLEX ;
188
189 @findex cexpf
190 PROCEDURE __BUILTIN__ cexpf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
191 @findex cexp
192 PROCEDURE __BUILTIN__ cexp (z: COMPLEX) : COMPLEX ;
193 @findex cexpl
194 PROCEDURE __BUILTIN__ cexpl (z: LONGCOMPLEX) : LONGCOMPLEX ;
195
196 @findex clnf
197 PROCEDURE __BUILTIN__ clnf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
198 @findex cln
199 PROCEDURE __BUILTIN__ cln (z: COMPLEX) : COMPLEX ;
200 @findex clnl
201 PROCEDURE __BUILTIN__ clnl (z: LONGCOMPLEX) : LONGCOMPLEX ;
202
203 @findex csinf
204 PROCEDURE __BUILTIN__ csinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
205 @findex csin
206 PROCEDURE __BUILTIN__ csin (z: COMPLEX) : COMPLEX ;
207 @findex csinl
208 PROCEDURE __BUILTIN__ csinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
209
210 @findex ccosf
211 PROCEDURE __BUILTIN__ ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
212 @findex ccos
213 PROCEDURE __BUILTIN__ ccos (z: COMPLEX) : COMPLEX ;
214 @findex ccosl
215 PROCEDURE __BUILTIN__ ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
216
217 @findex ctanf
218 PROCEDURE __BUILTIN__ ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
219 @findex ctan
220 PROCEDURE __BUILTIN__ ctan (z: COMPLEX) : COMPLEX ;
221 @findex ctanl
222 PROCEDURE __BUILTIN__ ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
223
224 @findex carcsinf
225 PROCEDURE __BUILTIN__ carcsinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
226 @findex carcsin
227 PROCEDURE __BUILTIN__ carcsin (z: COMPLEX) : COMPLEX ;
228 @findex carcsinl
229 PROCEDURE __BUILTIN__ carcsinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
230
231 @findex carccosf
232 PROCEDURE __BUILTIN__ carccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
233 @findex carccos
234 PROCEDURE __BUILTIN__ carccos (z: COMPLEX) : COMPLEX ;
235 @findex carccosl
236 PROCEDURE __BUILTIN__ carccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
237
238 @findex carctanf
239 PROCEDURE __BUILTIN__ carctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
240 @findex carctan
241 PROCEDURE __BUILTIN__ carctan (z: COMPLEX) : COMPLEX ;
242 @findex carctanl
243 PROCEDURE __BUILTIN__ carctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
244
245 (* memory and string intrincic procedure functions *)
246
247 @findex alloca
248 PROCEDURE __BUILTIN__ alloca (i: CARDINAL) : ADDRESS ;
249 @findex memcpy
250 PROCEDURE __BUILTIN__ memcpy (dest, src: ADDRESS;
251 nbytes: CARDINAL) : ADDRESS ;
252 @findex index
253 PROCEDURE __BUILTIN__ index (s: ADDRESS; c: INTEGER) : ADDRESS ;
254 @findex rindex
255 PROCEDURE __BUILTIN__ rindex (s: ADDRESS; c: INTEGER) : ADDRESS ;
256 @findex memcmp
257 PROCEDURE __BUILTIN__ memcmp (s1, s2: ADDRESS;
258 nbytes: CARDINAL) : INTEGER ;
259 @findex memset
260 PROCEDURE __BUILTIN__ memset (s: ADDRESS; c: INTEGER;
261 nbytes: CARDINAL) : ADDRESS ;
262 @findex memmove
263 PROCEDURE __BUILTIN__ memmove (s1, s2: ADDRESS;
264 nbytes: CARDINAL) : ADDRESS ;
265 @findex strcat
266 PROCEDURE __BUILTIN__ strcat (dest, src: ADDRESS) : ADDRESS ;
267 @findex strncat
268 PROCEDURE __BUILTIN__ strncat (dest, src: ADDRESS;
269 nbytes: CARDINAL) : ADDRESS ;
270 @findex strcpy
271 PROCEDURE __BUILTIN__ strcpy (dest, src: ADDRESS) : ADDRESS ;
272 @findex strncpy
273 PROCEDURE __BUILTIN__ strncpy (dest, src: ADDRESS;
274 nbytes: CARDINAL) : ADDRESS ;
275 @findex strcmp
276 PROCEDURE __BUILTIN__ strcmp (s1, s2: ADDRESS) : INTEGER ;
277 @findex strncmp
278 PROCEDURE __BUILTIN__ strncmp (s1, s2: ADDRESS;
279 nbytes: CARDINAL) : INTEGER ;
280 @findex strlen
281 PROCEDURE __BUILTIN__ strlen (s: ADDRESS) : INTEGER ;
282 @findex strstr
283 PROCEDURE __BUILTIN__ strstr (haystack, needle: ADDRESS) : ADDRESS ;
284 @findex strpbrk
285 PROCEDURE __BUILTIN__ strpbrk (s, accept: ADDRESS) : ADDRESS ;
286 @findex strspn
287 PROCEDURE __BUILTIN__ strspn (s, accept: ADDRESS) : CARDINAL ;
288 @findex strcspn
289 PROCEDURE __BUILTIN__ strcspn (s, accept: ADDRESS) : CARDINAL ;
290 @findex strchr
291 PROCEDURE __BUILTIN__ strchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
292 @findex strrchr
293 PROCEDURE __BUILTIN__ strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
294
295 (*
296 longjmp - this GCC builtin restricts the val to always 1.
297 *)
298 (* do not use these two builtins, as gcc, only really
299 anticipates that the Ada front end should use them
300 and it only uses them in its runtime exception handling.
301 We leave them here in the hope that someday they will
302 behave more like their libc counterparts. *)
303
304 @findex longjmp
305 PROCEDURE __BUILTIN__ longjmp (env: ADDRESS; val: INTEGER) ;
306 @findex setjmp
307 PROCEDURE __BUILTIN__ setjmp (env: ADDRESS) : INTEGER ;
308
309
310 (*
311 frame_address - returns the address of the frame.
312 The current frame is obtained if level is 0,
313 the next level up if level is 1 etc.
314 *)
315
316 @findex frame_address
317 PROCEDURE __BUILTIN__ frame_address (level: CARDINAL) : ADDRESS ;
318
319
320 (*
321 return_address - returns the return address of function.
322 The current function return address is
323 obtained if level is 0,
324 the next level up if level is 1 etc.
325 *)
326
327 @findex return_address
328 PROCEDURE __BUILTIN__ return_address (level: CARDINAL) : ADDRESS ;
329
330
331 (*
332 alloca_trace - this is a no-op which is used for internal debugging.
333 *)
334
335 @findex alloca_trace
336 PROCEDURE alloca_trace (returned: ADDRESS; nBytes: CARDINAL) : ADDRESS ;
337
338
339 END Builtins.
340 @end example