xfail scan-tree-dump-not throw in g++.dg/pr99966.C on hppa*64*-*-*
[official-gcc.git] / gcc / m2 / gm2-libs / Builtins.def
blob3e1cb29d1578f1f60793acf1721d0bb965d100cf
1 (* Builtins.def provides access to all built-in functions.
3 Copyright (C) 2001-2024 Free Software Foundation, Inc.
4 Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
6 This file is part of GNU Modula-2.
8 GNU Modula-2 is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
11 any later version.
13 GNU Modula-2 is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
18 Under Section 7 of GPL version 3, you are granted additional
19 permissions described in the GCC Runtime Library Exception, version
20 3.1, as published by the Free Software Foundation.
22 You should have received a copy of the GNU General Public License and
23 a copy of the GCC Runtime Library Exception along with this program;
24 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
25 <http://www.gnu.org/licenses/>. *)
27 DEFINITION MODULE Builtins ;
29 FROM SYSTEM IMPORT ADDRESS ;
31 (* floating point intrinsic procedure functions *)
33 PROCEDURE __BUILTIN__ isnanf (x: SHORTREAL) : INTEGER ;
34 PROCEDURE __BUILTIN__ isnan (x: REAL) : INTEGER ;
35 PROCEDURE __BUILTIN__ isnanl (x: LONGREAL) : INTEGER ;
37 PROCEDURE __BUILTIN__ isfinitef (x: SHORTREAL) : INTEGER ;
38 PROCEDURE __BUILTIN__ isfinite (x: REAL) : INTEGER ;
39 PROCEDURE __BUILTIN__ isfinitel (x: LONGREAL) : INTEGER ;
41 PROCEDURE __BUILTIN__ sinf (x: SHORTREAL) : SHORTREAL ;
42 PROCEDURE __BUILTIN__ sin (x: REAL) : REAL ;
43 PROCEDURE __BUILTIN__ sinl (x: LONGREAL) : LONGREAL ;
45 PROCEDURE __BUILTIN__ cosf (x: SHORTREAL) : SHORTREAL ;
46 PROCEDURE __BUILTIN__ cos (x: REAL) : REAL ;
47 PROCEDURE __BUILTIN__ cosl (x: LONGREAL) : LONGREAL ;
49 PROCEDURE __BUILTIN__ sqrtf (x: SHORTREAL) : SHORTREAL ;
50 PROCEDURE __BUILTIN__ sqrt (x: REAL) : REAL ;
51 PROCEDURE __BUILTIN__ sqrtl (x: LONGREAL) : LONGREAL ;
53 PROCEDURE __BUILTIN__ atan2f (x, y: SHORTREAL) : SHORTREAL ;
54 PROCEDURE __BUILTIN__ atan2 (x, y: REAL) : REAL ;
55 PROCEDURE __BUILTIN__ atan2l (x, y: LONGREAL) : LONGREAL ;
57 PROCEDURE __BUILTIN__ fabsf (x: SHORTREAL) : SHORTREAL ;
58 PROCEDURE __BUILTIN__ fabs (x: REAL) : REAL ;
59 PROCEDURE __BUILTIN__ fabsl (x: LONGREAL) : LONGREAL ;
61 PROCEDURE __BUILTIN__ logf (x: SHORTREAL) : SHORTREAL ;
62 PROCEDURE __BUILTIN__ log (x: REAL) : REAL ;
63 PROCEDURE __BUILTIN__ logl (x: LONGREAL) : LONGREAL ;
65 PROCEDURE __BUILTIN__ expf (x: SHORTREAL) : SHORTREAL ;
66 PROCEDURE __BUILTIN__ exp (x: REAL) : REAL ;
67 PROCEDURE __BUILTIN__ expl (x: LONGREAL) : LONGREAL ;
69 PROCEDURE __BUILTIN__ log10f (x: SHORTREAL) : SHORTREAL ;
70 PROCEDURE __BUILTIN__ log10 (x: REAL) : REAL ;
71 PROCEDURE __BUILTIN__ log10l (x: LONGREAL) : LONGREAL ;
73 PROCEDURE __BUILTIN__ exp10f (x: SHORTREAL) : SHORTREAL ;
74 PROCEDURE __BUILTIN__ exp10 (x: REAL) : REAL ;
75 PROCEDURE __BUILTIN__ exp10l (x: LONGREAL) : LONGREAL ;
77 PROCEDURE __BUILTIN__ ilogbf (x: SHORTREAL) : INTEGER ;
78 PROCEDURE __BUILTIN__ ilogb (x: REAL) : INTEGER ;
79 PROCEDURE __BUILTIN__ ilogbl (x: LONGREAL) : INTEGER ;
81 PROCEDURE __BUILTIN__ huge_val () : REAL ;
82 PROCEDURE __BUILTIN__ huge_valf () : SHORTREAL ;
83 PROCEDURE __BUILTIN__ huge_vall () : LONGREAL ;
85 PROCEDURE __BUILTIN__ modf (x: REAL; VAR y: REAL) : REAL ;
86 PROCEDURE __BUILTIN__ modff (x: SHORTREAL;
87 VAR y: SHORTREAL) : SHORTREAL ;
88 PROCEDURE __BUILTIN__ modfl (x: LONGREAL; VAR y: LONGREAL) : LONGREAL ;
90 PROCEDURE __BUILTIN__ signbit (r: REAL) : INTEGER ;
91 PROCEDURE __BUILTIN__ signbitf (s: SHORTREAL) : INTEGER ;
92 PROCEDURE __BUILTIN__ signbitl (l: LONGREAL) : INTEGER ;
94 PROCEDURE __BUILTIN__ nextafter (x, y: REAL) : REAL ;
95 PROCEDURE __BUILTIN__ nextafterf (x, y: SHORTREAL) : SHORTREAL ;
96 PROCEDURE __BUILTIN__ nextafterl (x, y: LONGREAL) : LONGREAL ;
98 PROCEDURE __BUILTIN__ nexttoward (x: REAL; y: LONGREAL) : REAL ;
99 PROCEDURE __BUILTIN__ nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ;
100 PROCEDURE __BUILTIN__ nexttowardl (x, y: LONGREAL) : LONGREAL ;
102 PROCEDURE __BUILTIN__ scalbln (x: REAL; n: LONGINT) : REAL ;
103 PROCEDURE __BUILTIN__ scalblnf (x: SHORTREAL; n: LONGINT) : SHORTREAL ;
104 PROCEDURE __BUILTIN__ scalblnl (x: LONGREAL; n: LONGINT) : LONGREAL ;
106 PROCEDURE __BUILTIN__ scalbn (x: REAL; n: INTEGER) : REAL ;
107 PROCEDURE __BUILTIN__ scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ;
108 PROCEDURE __BUILTIN__ scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ;
110 (* complex arithmetic intrincic procedure functions *)
112 PROCEDURE __BUILTIN__ cabsf (z: SHORTCOMPLEX) : SHORTREAL ;
113 PROCEDURE __BUILTIN__ cabs (z: COMPLEX) : REAL ;
114 PROCEDURE __BUILTIN__ cabsl (z: LONGCOMPLEX) : LONGREAL ;
116 PROCEDURE __BUILTIN__ cargf (z: SHORTCOMPLEX) : SHORTREAL ;
117 PROCEDURE __BUILTIN__ carg (z: COMPLEX) : REAL ;
118 PROCEDURE __BUILTIN__ cargl (z: LONGCOMPLEX) : LONGREAL ;
120 PROCEDURE __BUILTIN__ conjf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
121 PROCEDURE __BUILTIN__ conj (z: COMPLEX) : COMPLEX ;
122 PROCEDURE __BUILTIN__ conjl (z: LONGCOMPLEX) : LONGCOMPLEX ;
124 PROCEDURE __BUILTIN__ cpowerf (base: SHORTCOMPLEX;
125 exp: SHORTREAL) : SHORTCOMPLEX ;
126 PROCEDURE __BUILTIN__ cpower (base: COMPLEX; exp: REAL) : COMPLEX ;
127 PROCEDURE __BUILTIN__ cpowerl (base: LONGCOMPLEX;
128 exp: LONGREAL) : LONGCOMPLEX ;
130 PROCEDURE __BUILTIN__ csqrtf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
131 PROCEDURE __BUILTIN__ csqrt (z: COMPLEX) : COMPLEX ;
132 PROCEDURE __BUILTIN__ csqrtl (z: LONGCOMPLEX) : LONGCOMPLEX ;
134 PROCEDURE __BUILTIN__ cexpf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
135 PROCEDURE __BUILTIN__ cexp (z: COMPLEX) : COMPLEX ;
136 PROCEDURE __BUILTIN__ cexpl (z: LONGCOMPLEX) : LONGCOMPLEX ;
138 PROCEDURE __BUILTIN__ clnf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
139 PROCEDURE __BUILTIN__ cln (z: COMPLEX) : COMPLEX ;
140 PROCEDURE __BUILTIN__ clnl (z: LONGCOMPLEX) : LONGCOMPLEX ;
142 PROCEDURE __BUILTIN__ csinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
143 PROCEDURE __BUILTIN__ csin (z: COMPLEX) : COMPLEX ;
144 PROCEDURE __BUILTIN__ csinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
146 PROCEDURE __BUILTIN__ ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
147 PROCEDURE __BUILTIN__ ccos (z: COMPLEX) : COMPLEX ;
148 PROCEDURE __BUILTIN__ ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
150 PROCEDURE __BUILTIN__ ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
151 PROCEDURE __BUILTIN__ ctan (z: COMPLEX) : COMPLEX ;
152 PROCEDURE __BUILTIN__ ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
154 PROCEDURE __BUILTIN__ carcsinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
155 PROCEDURE __BUILTIN__ carcsin (z: COMPLEX) : COMPLEX ;
156 PROCEDURE __BUILTIN__ carcsinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
158 PROCEDURE __BUILTIN__ carccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
159 PROCEDURE __BUILTIN__ carccos (z: COMPLEX) : COMPLEX ;
160 PROCEDURE __BUILTIN__ carccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
162 PROCEDURE __BUILTIN__ carctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
163 PROCEDURE __BUILTIN__ carctan (z: COMPLEX) : COMPLEX ;
164 PROCEDURE __BUILTIN__ carctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
166 (* memory and string intrincic procedure functions *)
168 PROCEDURE __BUILTIN__ alloca (i: CARDINAL) : ADDRESS ;
169 PROCEDURE __BUILTIN__ memcpy (dest, src: ADDRESS;
170 nbytes: CARDINAL) : ADDRESS ;
171 PROCEDURE __BUILTIN__ index (s: ADDRESS; c: INTEGER) : ADDRESS ;
172 PROCEDURE __BUILTIN__ rindex (s: ADDRESS; c: INTEGER) : ADDRESS ;
173 PROCEDURE __BUILTIN__ memcmp (s1, s2: ADDRESS;
174 nbytes: CARDINAL) : INTEGER ;
175 PROCEDURE __BUILTIN__ memset (s: ADDRESS; c: INTEGER;
176 nbytes: CARDINAL) : ADDRESS ;
177 PROCEDURE __BUILTIN__ memmove (s1, s2: ADDRESS;
178 nbytes: CARDINAL) : ADDRESS ;
179 PROCEDURE __BUILTIN__ strcat (dest, src: ADDRESS) : ADDRESS ;
180 PROCEDURE __BUILTIN__ strncat (dest, src: ADDRESS;
181 nbytes: CARDINAL) : ADDRESS ;
182 PROCEDURE __BUILTIN__ strcpy (dest, src: ADDRESS) : ADDRESS ;
183 PROCEDURE __BUILTIN__ strncpy (dest, src: ADDRESS;
184 nbytes: CARDINAL) : ADDRESS ;
185 PROCEDURE __BUILTIN__ strcmp (s1, s2: ADDRESS) : INTEGER ;
186 PROCEDURE __BUILTIN__ strncmp (s1, s2: ADDRESS;
187 nbytes: CARDINAL) : INTEGER ;
188 PROCEDURE __BUILTIN__ strlen (s: ADDRESS) : INTEGER ;
189 PROCEDURE __BUILTIN__ strstr (haystack, needle: ADDRESS) : ADDRESS ;
190 PROCEDURE __BUILTIN__ strpbrk (s, accept: ADDRESS) : ADDRESS ;
191 PROCEDURE __BUILTIN__ strspn (s, accept: ADDRESS) : CARDINAL ;
192 PROCEDURE __BUILTIN__ strcspn (s, accept: ADDRESS) : CARDINAL ;
193 PROCEDURE __BUILTIN__ strchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
194 PROCEDURE __BUILTIN__ strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
197 longjmp - this GCC builtin restricts the val to always 1.
199 (* do not use these two builtins, as gcc, only really
200 anticipates that the Ada front end should use them
201 and it only uses them in its runtime exception handling.
202 We leave them here in the hope that someday they will
203 behave more like their libc counterparts. *)
205 PROCEDURE __BUILTIN__ longjmp (env: ADDRESS; val: INTEGER) ;
206 PROCEDURE __BUILTIN__ setjmp (env: ADDRESS) : INTEGER ;
210 frame_address - returns the address of the frame.
211 The current frame is obtained if level is 0,
212 the next level up if level is 1 etc.
215 PROCEDURE __BUILTIN__ frame_address (level: CARDINAL) : ADDRESS ;
219 return_address - returns the return address of function.
220 The current function return address is
221 obtained if level is 0,
222 the next level up if level is 1 etc.
225 PROCEDURE __BUILTIN__ return_address (level: CARDINAL) : ADDRESS ;
229 alloca_trace - this is a no-op which is used for internal debugging.
232 PROCEDURE alloca_trace (returned: ADDRESS; nBytes: CARDINAL) : ADDRESS ;
235 END Builtins.