3 DEFINITION MODULE Builtins ;
5 FROM SYSTEM IMPORT ADDRESS ;
7 (* floating point intrinsic procedure functions *)
10 PROCEDURE __BUILTIN__ isfinitef (x: SHORTREAL) : BOOLEAN ;
12 PROCEDURE __BUILTIN__ isfinite (x: REAL) : BOOLEAN ;
14 PROCEDURE __BUILTIN__ isfinitel (x: LONGREAL) : BOOLEAN ;
17 PROCEDURE __BUILTIN__ sinf (x: SHORTREAL) : SHORTREAL ;
19 PROCEDURE __BUILTIN__ sin (x: REAL) : REAL ;
21 PROCEDURE __BUILTIN__ sinl (x: LONGREAL) : LONGREAL ;
24 PROCEDURE __BUILTIN__ cosf (x: SHORTREAL) : SHORTREAL ;
26 PROCEDURE __BUILTIN__ cos (x: REAL) : REAL ;
28 PROCEDURE __BUILTIN__ cosl (x: LONGREAL) : LONGREAL ;
31 PROCEDURE __BUILTIN__ sqrtf (x: SHORTREAL) : SHORTREAL ;
33 PROCEDURE __BUILTIN__ sqrt (x: REAL) : REAL ;
35 PROCEDURE __BUILTIN__ sqrtl (x: LONGREAL) : LONGREAL ;
38 PROCEDURE __BUILTIN__ atan2f (x, y: SHORTREAL) : SHORTREAL ;
40 PROCEDURE __BUILTIN__ atan2 (x, y: REAL) : REAL ;
42 PROCEDURE __BUILTIN__ atan2l (x, y: LONGREAL) : LONGREAL ;
45 PROCEDURE __BUILTIN__ fabsf (x: SHORTREAL) : SHORTREAL ;
47 PROCEDURE __BUILTIN__ fabs (x: REAL) : REAL ;
49 PROCEDURE __BUILTIN__ fabsl (x: LONGREAL) : LONGREAL ;
52 PROCEDURE __BUILTIN__ logf (x: SHORTREAL) : SHORTREAL ;
54 PROCEDURE __BUILTIN__ log (x: REAL) : REAL ;
56 PROCEDURE __BUILTIN__ logl (x: LONGREAL) : LONGREAL ;
59 PROCEDURE __BUILTIN__ expf (x: SHORTREAL) : SHORTREAL ;
61 PROCEDURE __BUILTIN__ exp (x: REAL) : REAL ;
63 PROCEDURE __BUILTIN__ expl (x: LONGREAL) : LONGREAL ;
66 PROCEDURE __BUILTIN__ log10f (x: SHORTREAL) : SHORTREAL ;
68 PROCEDURE __BUILTIN__ log10 (x: REAL) : REAL ;
70 PROCEDURE __BUILTIN__ log10l (x: LONGREAL) : LONGREAL ;
73 PROCEDURE __BUILTIN__ exp10f (x: SHORTREAL) : SHORTREAL ;
75 PROCEDURE __BUILTIN__ exp10 (x: REAL) : REAL ;
77 PROCEDURE __BUILTIN__ exp10l (x: LONGREAL) : LONGREAL ;
80 PROCEDURE __BUILTIN__ ilogbf (x: SHORTREAL) : INTEGER ;
82 PROCEDURE __BUILTIN__ ilogb (x: REAL) : INTEGER ;
84 PROCEDURE __BUILTIN__ ilogbl (x: LONGREAL) : INTEGER ;
87 PROCEDURE __BUILTIN__ huge_val () : REAL ;
89 PROCEDURE __BUILTIN__ huge_valf () : SHORTREAL ;
91 PROCEDURE __BUILTIN__ huge_vall () : LONGREAL ;
94 PROCEDURE __BUILTIN__ significand (r: REAL) : REAL ;
96 PROCEDURE __BUILTIN__ significandf (s: SHORTREAL) : SHORTREAL ;
98 PROCEDURE __BUILTIN__ significandl (l: LONGREAL) : LONGREAL ;
101 PROCEDURE __BUILTIN__ modf (x: REAL; VAR y: REAL) : REAL ;
103 PROCEDURE __BUILTIN__ modff (x: SHORTREAL;
104 VAR y: SHORTREAL) : SHORTREAL ;
106 PROCEDURE __BUILTIN__ modfl (x: LONGREAL; VAR y: LONGREAL) : LONGREAL ;
109 PROCEDURE __BUILTIN__ signbit (r: REAL) : INTEGER ;
111 PROCEDURE __BUILTIN__ signbitf (s: SHORTREAL) : INTEGER ;
113 PROCEDURE __BUILTIN__ signbitl (l: LONGREAL) : INTEGER ;
116 PROCEDURE __BUILTIN__ nextafter (x, y: REAL) : REAL ;
118 PROCEDURE __BUILTIN__ nextafterf (x, y: SHORTREAL) : SHORTREAL ;
120 PROCEDURE __BUILTIN__ nextafterl (x, y: LONGREAL) : LONGREAL ;
123 PROCEDURE __BUILTIN__ nexttoward (x, y: REAL) : LONGREAL ;
125 PROCEDURE __BUILTIN__ nexttowardf (x, y: SHORTREAL) : LONGREAL ;
127 PROCEDURE __BUILTIN__ nexttowardl (x, y: LONGREAL) : LONGREAL ;
130 PROCEDURE __BUILTIN__ scalb (x, n: REAL) : REAL ;
132 PROCEDURE __BUILTIN__ scalbf (x, n: SHORTREAL) : SHORTREAL ;
134 PROCEDURE __BUILTIN__ scalbl (x, n: LONGREAL) : LONGREAL ;
137 PROCEDURE __BUILTIN__ scalbln (x: REAL; n: LONGINT) : REAL ;
139 PROCEDURE __BUILTIN__ scalblnf (x: SHORTREAL; n: LONGINT) : SHORTREAL ;
141 PROCEDURE __BUILTIN__ scalblnl (x: LONGREAL; n: LONGINT) : LONGREAL ;
144 PROCEDURE __BUILTIN__ scalbn (x: REAL; n: INTEGER) : REAL ;
146 PROCEDURE __BUILTIN__ scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ;
148 PROCEDURE __BUILTIN__ scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ;
150 (* complex arithmetic intrincic procedure functions *)
153 PROCEDURE __BUILTIN__ cabsf (z: SHORTCOMPLEX) : SHORTREAL ;
155 PROCEDURE __BUILTIN__ cabs (z: COMPLEX) : REAL ;
157 PROCEDURE __BUILTIN__ cabsl (z: LONGCOMPLEX) : LONGREAL ;
160 PROCEDURE __BUILTIN__ cargf (z: SHORTCOMPLEX) : SHORTREAL ;
162 PROCEDURE __BUILTIN__ carg (z: COMPLEX) : REAL ;
164 PROCEDURE __BUILTIN__ cargl (z: LONGCOMPLEX) : LONGREAL ;
167 PROCEDURE __BUILTIN__ conjf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
169 PROCEDURE __BUILTIN__ conj (z: COMPLEX) : COMPLEX ;
171 PROCEDURE __BUILTIN__ conjl (z: LONGCOMPLEX) : LONGCOMPLEX ;
174 PROCEDURE __BUILTIN__ cpowerf (base: SHORTCOMPLEX;
175 exp: SHORTREAL) : SHORTCOMPLEX ;
177 PROCEDURE __BUILTIN__ cpower (base: COMPLEX; exp: REAL) : COMPLEX ;
179 PROCEDURE __BUILTIN__ cpowerl (base: LONGCOMPLEX;
180 exp: LONGREAL) : LONGCOMPLEX ;
183 PROCEDURE __BUILTIN__ csqrtf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
185 PROCEDURE __BUILTIN__ csqrt (z: COMPLEX) : COMPLEX ;
187 PROCEDURE __BUILTIN__ csqrtl (z: LONGCOMPLEX) : LONGCOMPLEX ;
190 PROCEDURE __BUILTIN__ cexpf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
192 PROCEDURE __BUILTIN__ cexp (z: COMPLEX) : COMPLEX ;
194 PROCEDURE __BUILTIN__ cexpl (z: LONGCOMPLEX) : LONGCOMPLEX ;
197 PROCEDURE __BUILTIN__ clnf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
199 PROCEDURE __BUILTIN__ cln (z: COMPLEX) : COMPLEX ;
201 PROCEDURE __BUILTIN__ clnl (z: LONGCOMPLEX) : LONGCOMPLEX ;
204 PROCEDURE __BUILTIN__ csinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
206 PROCEDURE __BUILTIN__ csin (z: COMPLEX) : COMPLEX ;
208 PROCEDURE __BUILTIN__ csinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
211 PROCEDURE __BUILTIN__ ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
213 PROCEDURE __BUILTIN__ ccos (z: COMPLEX) : COMPLEX ;
215 PROCEDURE __BUILTIN__ ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
218 PROCEDURE __BUILTIN__ ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
220 PROCEDURE __BUILTIN__ ctan (z: COMPLEX) : COMPLEX ;
222 PROCEDURE __BUILTIN__ ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
225 PROCEDURE __BUILTIN__ carcsinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
227 PROCEDURE __BUILTIN__ carcsin (z: COMPLEX) : COMPLEX ;
229 PROCEDURE __BUILTIN__ carcsinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
232 PROCEDURE __BUILTIN__ carccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
234 PROCEDURE __BUILTIN__ carccos (z: COMPLEX) : COMPLEX ;
236 PROCEDURE __BUILTIN__ carccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
239 PROCEDURE __BUILTIN__ carctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
241 PROCEDURE __BUILTIN__ carctan (z: COMPLEX) : COMPLEX ;
243 PROCEDURE __BUILTIN__ carctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
245 (* memory and string intrincic procedure functions *)
248 PROCEDURE __BUILTIN__ alloca (i: CARDINAL) : ADDRESS ;
250 PROCEDURE __BUILTIN__ memcpy (dest, src: ADDRESS;
251 nbytes: CARDINAL) : ADDRESS ;
253 PROCEDURE __BUILTIN__ index (s: ADDRESS; c: INTEGER) : ADDRESS ;
255 PROCEDURE __BUILTIN__ rindex (s: ADDRESS; c: INTEGER) : ADDRESS ;
257 PROCEDURE __BUILTIN__ memcmp (s1, s2: ADDRESS;
258 nbytes: CARDINAL) : INTEGER ;
260 PROCEDURE __BUILTIN__ memset (s: ADDRESS; c: INTEGER;
261 nbytes: CARDINAL) : ADDRESS ;
263 PROCEDURE __BUILTIN__ memmove (s1, s2: ADDRESS;
264 nbytes: CARDINAL) : ADDRESS ;
266 PROCEDURE __BUILTIN__ strcat (dest, src: ADDRESS) : ADDRESS ;
268 PROCEDURE __BUILTIN__ strncat (dest, src: ADDRESS;
269 nbytes: CARDINAL) : ADDRESS ;
271 PROCEDURE __BUILTIN__ strcpy (dest, src: ADDRESS) : ADDRESS ;
273 PROCEDURE __BUILTIN__ strncpy (dest, src: ADDRESS;
274 nbytes: CARDINAL) : ADDRESS ;
276 PROCEDURE __BUILTIN__ strcmp (s1, s2: ADDRESS) : INTEGER ;
278 PROCEDURE __BUILTIN__ strncmp (s1, s2: ADDRESS;
279 nbytes: CARDINAL) : INTEGER ;
281 PROCEDURE __BUILTIN__ strlen (s: ADDRESS) : INTEGER ;
283 PROCEDURE __BUILTIN__ strstr (haystack, needle: ADDRESS) : ADDRESS ;
285 PROCEDURE __BUILTIN__ strpbrk (s, accept: ADDRESS) : ADDRESS ;
287 PROCEDURE __BUILTIN__ strspn (s, accept: ADDRESS) : CARDINAL ;
289 PROCEDURE __BUILTIN__ strcspn (s, accept: ADDRESS) : CARDINAL ;
291 PROCEDURE __BUILTIN__ strchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
293 PROCEDURE __BUILTIN__ strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
296 longjmp - this GCC builtin restricts the val to always 1.
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. *)
305 PROCEDURE __BUILTIN__ longjmp (env: ADDRESS; val: INTEGER) ;
307 PROCEDURE __BUILTIN__ setjmp (env: ADDRESS) : INTEGER ;
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.
316 @findex frame_address
317 PROCEDURE __BUILTIN__ frame_address (level: CARDINAL) : ADDRESS ;
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.
327 @findex return_address
328 PROCEDURE __BUILTIN__ return_address (level: CARDINAL) : ADDRESS ;
332 alloca_trace - this is a no-op which is used for internal debugging.
336 PROCEDURE alloca_trace (returned: ADDRESS; nBytes: CARDINAL) : ADDRESS ;