1 /*
2 * Copyright 1993 Bill Triggs <Bill.Triggs@inrialpes.fr>
3 * Copyright 1995-2017 Bruno Haible <bruno@clisp.org>
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 /* { dg-do run } */
20
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include <string.h>
24 #include <ffi.h>
25 #include "alignof.h"
26 #include <stdarg.h>
27
28 /* libffi testsuite local changes -------------------------------- */
29 #ifdef DGTEST
30 /* Redefine exit(1) as a test failure */
31 #define exit(V) (void)((V) ? (abort(), 1) : exit(0))
32 int count = 0;
33 char rbuf1[2048];
34 char rbuf2[2048];
_fprintf(FILE * stream,const char * format,...)35 int _fprintf(FILE *stream, const char *format, ...)
36 {
37 va_list args;
38 va_start(args, format);
39
40 switch (count++)
41 {
42 case 0:
43 case 1:
44 vsprintf(&rbuf1[strlen(rbuf1)], format, args);
45 break;
46 case 2:
47 printf("%s", rbuf1);
48 vsprintf(rbuf2, format, args);
49 break;
50 case 3:
51 vsprintf(&rbuf2[strlen(rbuf2)], format, args);
52 printf("%s", rbuf2);
53 if (strcmp (rbuf1, rbuf2)) abort();
54 break;
55 }
56
57 va_end(args);
58
59 return 0;
60 }
61 #define fprintf _fprintf
62 #endif
63 /* --------------------------------------------------------------- */
64
65 #include "testcases.c"
66
67 #ifndef ABI_NUM
68 #define ABI_NUM FFI_DEFAULT_ABI
69 #endif
70
71 /* Definitions that ought to be part of libffi. */
72 static ffi_type ffi_type_char;
73 #define ffi_type_slonglong ffi_type_sint64
74 #define ffi_type_ulonglong ffi_type_uint64
75
76 /* libffi does not support arrays inside structs. */
77 #define SKIP_EXTRA_STRUCTS
78
79 #define FFI_PREP_CIF(cif,argtypes,rettype) \
80 if (ffi_prep_cif(&(cif),ABI_NUM,sizeof(argtypes)/sizeof(argtypes[0]),&rettype,argtypes) != FFI_OK) abort()
81 #define FFI_PREP_CIF_NOARGS(cif,rettype) \
82 if (ffi_prep_cif(&(cif),ABI_NUM,0,&rettype,NULL) != FFI_OK) abort()
83
84 #if defined(__sparc__) && defined(__sun) && defined(__SUNPRO_C) /* SUNWspro cc */
85 /* SunPRO cc miscompiles the simulator function for X_BcdB: d.i[1] is
86 * temporarily stored in %l2 and put onto the stack from %l2, but in between
87 * the copy of X has used %l2 as a counter without saving and restoring its
88 * value.
89 */
90 #define SKIP_X
91 #endif
92 #if defined(__mipsn32__) && !defined(__GNUC__)
93 /* The X test crashes for an unknown reason. */
94 #define SKIP_X
95 #endif
96
97
98 /* These functions simulate the behaviour of the functions defined in testcases.c. */
99
100 /* void tests */
v_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)101 void v_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
102 {
103 if (data != (void*)&v_v) { fprintf(out,"wrong data for v_v\n"); exit(1); }
104 fprintf(out,"void f(void):\n");
105 fflush(out);
106 }
107
108 /* int tests */
i_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)109 void i_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
110 {
111 if (data != (void*)&i_v) { fprintf(out,"wrong data for i_v\n"); exit(1); }
112 {int r=99;
113 fprintf(out,"int f(void):");
114 fflush(out);
115 *(ffi_arg*)retp = r;
116 }}
i_i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)117 void i_i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
118 {
119 if (data != (void*)&i_i) { fprintf(out,"wrong data for i_i\n"); exit(1); }
120 int a = *(int*)(*args++);
121 int r=a+1;
122 fprintf(out,"int f(int):(%d)",a);
123 fflush(out);
124 *(ffi_arg*)retp = r;
125 }
i_i2_simulator(ffi_cif * cif,void * retp,void ** args,void * data)126 void i_i2_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
127 {
128 if (data != (void*)&i_i2) { fprintf(out,"wrong data for i_i2\n"); exit(1); }
129 {int a = *(int*)(*args++);
130 int b = *(int*)(*args++);
131 int r=a+b;
132 fprintf(out,"int f(2*int):(%d,%d)",a,b);
133 fflush(out);
134 *(ffi_arg*)retp = r;
135 }}
i_i4_simulator(ffi_cif * cif,void * retp,void ** args,void * data)136 void i_i4_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
137 {
138 if (data != (void*)&i_i4) { fprintf(out,"wrong data for i_i4\n"); exit(1); }
139 {int a = *(int*)(*args++);
140 int b = *(int*)(*args++);
141 int c = *(int*)(*args++);
142 int d = *(int*)(*args++);
143 int r=a+b+c+d;
144 fprintf(out,"int f(4*int):(%d,%d,%d,%d)",a,b,c,d);
145 fflush(out);
146 *(ffi_arg*)retp = r;
147 }}
i_i8_simulator(ffi_cif * cif,void * retp,void ** args,void * data)148 void i_i8_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
149 {
150 if (data != (void*)&i_i8) { fprintf(out,"wrong data for i_i8\n"); exit(1); }
151 {int a = *(int*)(*args++);
152 int b = *(int*)(*args++);
153 int c = *(int*)(*args++);
154 int d = *(int*)(*args++);
155 int e = *(int*)(*args++);
156 int f = *(int*)(*args++);
157 int g = *(int*)(*args++);
158 int h = *(int*)(*args++);
159 int r=a+b+c+d+e+f+g+h;
160 fprintf(out,"int f(8*int):(%d,%d,%d,%d,%d,%d,%d,%d)",a,b,c,d,e,f,g,h);
161 fflush(out);
162 *(ffi_arg*)retp = r;
163 }}
i_i16_simulator(ffi_cif * cif,void * retp,void ** args,void * data)164 void i_i16_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
165 {
166 if (data != (void*)&i_i16) { fprintf(out,"wrong data for i_i16\n"); exit(1); }
167 {int a = *(int*)(*args++);
168 int b = *(int*)(*args++);
169 int c = *(int*)(*args++);
170 int d = *(int*)(*args++);
171 int e = *(int*)(*args++);
172 int f = *(int*)(*args++);
173 int g = *(int*)(*args++);
174 int h = *(int*)(*args++);
175 int i = *(int*)(*args++);
176 int j = *(int*)(*args++);
177 int k = *(int*)(*args++);
178 int l = *(int*)(*args++);
179 int m = *(int*)(*args++);
180 int n = *(int*)(*args++);
181 int o = *(int*)(*args++);
182 int p = *(int*)(*args++);
183 int r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p;
184 fprintf(out,"int f(16*int):(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)",
185 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
186 fflush(out);
187 *(ffi_arg*)retp = r;
188 }}
189
190 /* float tests */
f_f_simulator(ffi_cif * cif,void * retp,void ** args,void * data)191 void f_f_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
192 {
193 if (data != (void*)&f_f) { fprintf(out,"wrong data for f_f\n"); exit(1); }
194 {float a = *(float*)(*args++);
195 float r=a+1.0;
196 fprintf(out,"float f(float):(%g)",a);
197 fflush(out);
198 *(float*)retp = r;
199 }}
f_f2_simulator(ffi_cif * cif,void * retp,void ** args,void * data)200 void f_f2_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
201 {
202 if (data != (void*)&f_f2) { fprintf(out,"wrong data for f_f2\n"); exit(1); }
203 {float a = *(float*)(*args++);
204 float b = *(float*)(*args++);
205 float r=a+b;
206 fprintf(out,"float f(2*float):(%g,%g)",a,b);
207 fflush(out);
208 *(float*)retp = r;
209 }}
f_f4_simulator(ffi_cif * cif,void * retp,void ** args,void * data)210 void f_f4_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
211 {
212 if (data != (void*)&f_f4) { fprintf(out,"wrong data for f_f4\n"); exit(1); }
213 {float a = *(float*)(*args++);
214 float b = *(float*)(*args++);
215 float c = *(float*)(*args++);
216 float d = *(float*)(*args++);
217 float r=a+b+c+d;
218 fprintf(out,"float f(4*float):(%g,%g,%g,%g)",a,b,c,d);
219 fflush(out);
220 *(float*)retp = r;
221 }}
f_f8_simulator(ffi_cif * cif,void * retp,void ** args,void * data)222 void f_f8_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
223 {
224 if (data != (void*)&f_f8) { fprintf(out,"wrong data for f_f8\n"); exit(1); }
225 {float a = *(float*)(*args++);
226 float b = *(float*)(*args++);
227 float c = *(float*)(*args++);
228 float d = *(float*)(*args++);
229 float e = *(float*)(*args++);
230 float f = *(float*)(*args++);
231 float g = *(float*)(*args++);
232 float h = *(float*)(*args++);
233 float r=a+b+c+d+e+f+g+h;
234 fprintf(out,"float f(8*float):(%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h);
235 fflush(out);
236 *(float*)retp = r;
237 }}
f_f16_simulator(ffi_cif * cif,void * retp,void ** args,void * data)238 void f_f16_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
239 {
240 if (data != (void*)&f_f16) { fprintf(out,"wrong data for f_f16\n"); exit(1); }
241 {float a = *(float*)(*args++);
242 float b = *(float*)(*args++);
243 float c = *(float*)(*args++);
244 float d = *(float*)(*args++);
245 float e = *(float*)(*args++);
246 float f = *(float*)(*args++);
247 float g = *(float*)(*args++);
248 float h = *(float*)(*args++);
249 float i = *(float*)(*args++);
250 float j = *(float*)(*args++);
251 float k = *(float*)(*args++);
252 float l = *(float*)(*args++);
253 float m = *(float*)(*args++);
254 float n = *(float*)(*args++);
255 float o = *(float*)(*args++);
256 float p = *(float*)(*args++);
257 float r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p;
258 fprintf(out,"float f(16*float):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
259 fflush(out);
260 *(float*)retp = r;
261 }}
f_f24_simulator(ffi_cif * cif,void * retp,void ** args,void * data)262 void f_f24_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
263 {
264 if (data != (void*)&f_f24) { fprintf(out,"wrong data for f_f24\n"); exit(1); }
265 {float a = *(float*)(*args++);
266 float b = *(float*)(*args++);
267 float c = *(float*)(*args++);
268 float d = *(float*)(*args++);
269 float e = *(float*)(*args++);
270 float f = *(float*)(*args++);
271 float g = *(float*)(*args++);
272 float h = *(float*)(*args++);
273 float i = *(float*)(*args++);
274 float j = *(float*)(*args++);
275 float k = *(float*)(*args++);
276 float l = *(float*)(*args++);
277 float m = *(float*)(*args++);
278 float n = *(float*)(*args++);
279 float o = *(float*)(*args++);
280 float p = *(float*)(*args++);
281 float q = *(float*)(*args++);
282 float s = *(float*)(*args++);
283 float t = *(float*)(*args++);
284 float u = *(float*)(*args++);
285 float v = *(float*)(*args++);
286 float w = *(float*)(*args++);
287 float x = *(float*)(*args++);
288 float y = *(float*)(*args++);
289 float r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+s+t+u+v+w+x+y;
290 fprintf(out,"float f(24*float):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,v,w,x,y);
291 fflush(out);
292 *(float*)retp = r;
293 }}
294
295 /* double tests */
d_d_simulator(ffi_cif * cif,void * retp,void ** args,void * data)296 void d_d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
297 {
298 if (data != (void*)&d_d) { fprintf(out,"wrong data for d_d\n"); exit(1); }
299 {double a = *(double*)(*args++);
300 double r=a+1.0;
301 fprintf(out,"double f(double):(%g)",a);
302 fflush(out);
303 *(double*)retp = r;
304 }}
d_d2_simulator(ffi_cif * cif,void * retp,void ** args,void * data)305 void d_d2_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
306 {
307 if (data != (void*)&d_d2) { fprintf(out,"wrong data for d_d2\n"); exit(1); }
308 {double a = *(double*)(*args++);
309 double b = *(double*)(*args++);
310 double r=a+b;
311 fprintf(out,"double f(2*double):(%g,%g)",a,b);
312 fflush(out);
313 *(double*)retp = r;
314 }}
d_d4_simulator(ffi_cif * cif,void * retp,void ** args,void * data)315 void d_d4_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
316 {
317 if (data != (void*)&d_d4) { fprintf(out,"wrong data for d_d4\n"); exit(1); }
318 {double a = *(double*)(*args++);
319 double b = *(double*)(*args++);
320 double c = *(double*)(*args++);
321 double d = *(double*)(*args++);
322 double r=a+b+c+d;
323 fprintf(out,"double f(4*double):(%g,%g,%g,%g)",a,b,c,d);
324 fflush(out);
325 *(double*)retp = r;
326 }}
d_d8_simulator(ffi_cif * cif,void * retp,void ** args,void * data)327 void d_d8_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
328 {
329 if (data != (void*)&d_d8) { fprintf(out,"wrong data for d_d8\n"); exit(1); }
330 {double a = *(double*)(*args++);
331 double b = *(double*)(*args++);
332 double c = *(double*)(*args++);
333 double d = *(double*)(*args++);
334 double e = *(double*)(*args++);
335 double f = *(double*)(*args++);
336 double g = *(double*)(*args++);
337 double h = *(double*)(*args++);
338 double r=a+b+c+d+e+f+g+h;
339 fprintf(out,"double f(8*double):(%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h);
340 fflush(out);
341 *(double*)retp = r;
342 }}
d_d16_simulator(ffi_cif * cif,void * retp,void ** args,void * data)343 void d_d16_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
344 {
345 if (data != (void*)&d_d16) { fprintf(out,"wrong data for d_d16\n"); exit(1); }
346 {double a = *(double*)(*args++);
347 double b = *(double*)(*args++);
348 double c = *(double*)(*args++);
349 double d = *(double*)(*args++);
350 double e = *(double*)(*args++);
351 double f = *(double*)(*args++);
352 double g = *(double*)(*args++);
353 double h = *(double*)(*args++);
354 double i = *(double*)(*args++);
355 double j = *(double*)(*args++);
356 double k = *(double*)(*args++);
357 double l = *(double*)(*args++);
358 double m = *(double*)(*args++);
359 double n = *(double*)(*args++);
360 double o = *(double*)(*args++);
361 double p = *(double*)(*args++);
362 double r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p;
363 fprintf(out,"double f(16*double):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
364 fflush(out);
365 *(double*)retp = r;
366 }}
367
368 /* pointer tests */
vp_vpdpcpsp_simulator(ffi_cif * cif,void * retp,void ** args,void * data)369 void vp_vpdpcpsp_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
370 {
371 if (data != (void*)&vp_vpdpcpsp) { fprintf(out,"wrong data for vp_vpdpcpsp\n"); exit(1); }
372 {void* a = *(void* *)(*args++);
373 double* b = *(double* *)(*args++);
374 char* c = *(char* *)(*args++);
375 Int* d = *(Int* *)(*args++);
376 void* ret = (char*)b + 1;
377 fprintf(out,"void* f(void*,double*,char*,Int*):(0x%p,0x%p,0x%p,0x%p)",a,b,c,d);
378 fflush(out);
379 *(void* *)retp = ret;
380 }}
381
382 /* mixed number tests */
uc_ucsil_simulator(ffi_cif * cif,void * retp,void ** args,void * data)383 void uc_ucsil_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
384 {
385 if (data != (void*)&uc_ucsil) { fprintf(out,"wrong data for uc_ucsil\n"); exit(1); }
386 {uchar a = *(unsigned char *)(*args++);
387 ushort b = *(unsigned short *)(*args++);
388 uint c = *(unsigned int *)(*args++);
389 ulong d = *(unsigned long *)(*args++);
390 uchar r = (uchar)-1;
391 fprintf(out,"uchar f(uchar,ushort,uint,ulong):(%u,%u,%u,%lu)",a,b,c,d);
392 fflush(out);
393 *(ffi_arg *)retp = r;
394 }}
d_iidd_simulator(ffi_cif * cif,void * retp,void ** args,void * data)395 void d_iidd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
396 {
397 if (data != (void*)&d_iidd) { fprintf(out,"wrong data for d_iidd\n"); exit(1); }
398 {int a = *(int*)(*args++);
399 int b = *(int*)(*args++);
400 double c = *(double*)(*args++);
401 double d = *(double*)(*args++);
402 double r=a+b+c+d;
403 fprintf(out,"double f(int,int,double,double):(%d,%d,%g,%g)",a,b,c,d);
404 fflush(out);
405 *(double*)retp = r;
406 }}
d_iiidi_simulator(ffi_cif * cif,void * retp,void ** args,void * data)407 void d_iiidi_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
408 {
409 if (data != (void*)&d_iiidi) { fprintf(out,"wrong data for d_iiidi\n"); exit(1); }
410 {int a = *(int*)(*args++);
411 int b = *(int*)(*args++);
412 int c = *(int*)(*args++);
413 double d = *(double*)(*args++);
414 int e = *(int*)(*args++);
415 double r=a+b+c+d+e;
416 fprintf(out,"double f(int,int,int,double,int):(%d,%d,%d,%g,%d)",a,b,c,d,e);
417 fflush(out);
418 *(double*)retp = r;
419 }}
d_idid_simulator(ffi_cif * cif,void * retp,void ** args,void * data)420 void d_idid_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
421 {
422 if (data != (void*)&d_idid) { fprintf(out,"wrong data for d_idid\n"); exit(1); }
423 {int a = *(int*)(*args++);
424 double b = *(double*)(*args++);
425 int c = *(int*)(*args++);
426 double d = *(double*)(*args++);
427 double r=a+b+c+d;
428 fprintf(out,"double f(int,double,int,double):(%d,%g,%d,%g)",a,b,c,d);
429 fflush(out);
430 *(double*)retp = r;
431 }}
d_fdi_simulator(ffi_cif * cif,void * retp,void ** args,void * data)432 void d_fdi_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
433 {
434 if (data != (void*)&d_fdi) { fprintf(out,"wrong data for d_fdi\n"); exit(1); }
435 {float a = *(float*)(*args++);
436 double b = *(double*)(*args++);
437 int c = *(int*)(*args++);
438 double r=a+b+c;
439 fprintf(out,"double f(float,double,int):(%g,%g,%d)",a,b,c);
440 fflush(out);
441 *(double*)retp = r;
442 }}
us_cdcd_simulator(ffi_cif * cif,void * retp,void ** args,void * data)443 void us_cdcd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
444 {
445 if (data != (void*)&us_cdcd) { fprintf(out,"wrong data for us_cdcd\n"); exit(1); }
446 {char a = *(char*)(*args++);
447 double b = *(double*)(*args++);
448 char c = *(char*)(*args++);
449 double d = *(double*)(*args++);
450 ushort r = (ushort)(a + b + c + d);
451 fprintf(out,"ushort f(char,double,char,double):('%c',%g,'%c',%g)",a,b,c,d);
452 fflush(out);
453 *(ffi_arg *)retp = r;
454 }}
ll_iiilli_simulator(ffi_cif * cif,void * retp,void ** args,void * data)455 void ll_iiilli_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
456 {
457 if (data != (void*)&ll_iiilli) { fprintf(out,"wrong data for ll_iiilli\n"); exit(1); }
458 {int a = *(int*)(*args++);
459 int b = *(int*)(*args++);
460 int c = *(int*)(*args++);
461 long long d = *(long long *)(*args++);
462 int e = *(int*)(*args++);
463 long long r = (long long)(int)a + (long long)(int)b + (long long)(int)c + d + (long long)e;
464 fprintf(out,"long long f(int,int,int,long long,int):(%d,%d,%d,0x%lx%08lx,%d)",a,b,c,(long)(d>>32),(long)(d&0xffffffff),e);
465 fflush(out);
466 *(long long *)retp = r;
467 }}
ll_flli_simulator(ffi_cif * cif,void * retp,void ** args,void * data)468 void ll_flli_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
469 {
470 if (data != (void*)&ll_flli) { fprintf(out,"wrong data for ll_flli\n"); exit(1); }
471 {float a = *(float*)(*args++);
472 long long b = *(long long *)(*args++);
473 int c = *(int*)(*args++);
474 long long r = (long long)(int)a + b + (long long)c;
475 fprintf(out,"long long f(float,long long,int):(%g,0x%lx%08lx,0x%lx)",a,(long)(b>>32),(long)(b&0xffffffff),(long)c);
476 fflush(out);
477 *(long long *)retp = r;
478 }}
f_fi_simulator(ffi_cif * cif,void * retp,void ** args,void * data)479 void f_fi_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
480 {
481 if (data != (void*)&f_fi) { fprintf(out,"wrong data for f_fi\n"); exit(1); }
482 {float a = *(float*)(*args++);
483 int z = *(int*)(*args++);
484 float r=a+z;
485 fprintf(out,"float f(float,int):(%g,%d)",a,z);
486 fflush(out);
487 *(float*)retp = r;
488 }}
f_f2i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)489 void f_f2i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
490 {
491 if (data != (void*)&f_f2i) { fprintf(out,"wrong data for f_f2i\n"); exit(1); }
492 {float a = *(float*)(*args++);
493 float b = *(float*)(*args++);
494 int z = *(int*)(*args++);
495 float r=a+b+z;
496 fprintf(out,"float f(2*float,int):(%g,%g,%d)",a,b,z);
497 fflush(out);
498 *(float*)retp = r;
499 }}
f_f3i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)500 void f_f3i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
501 {
502 if (data != (void*)&f_f3i) { fprintf(out,"wrong data for f_f3i\n"); exit(1); }
503 {float a = *(float*)(*args++);
504 float b = *(float*)(*args++);
505 float c = *(float*)(*args++);
506 int z = *(int*)(*args++);
507 float r=a+b+c+z;
508 fprintf(out,"float f(3*float,int):(%g,%g,%g,%d)",a,b,c,z);
509 fflush(out);
510 *(float*)retp = r;
511 }}
f_f4i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)512 void f_f4i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
513 {
514 if (data != (void*)&f_f4i) { fprintf(out,"wrong data for f_f4i\n"); exit(1); }
515 {float a = *(float*)(*args++);
516 float b = *(float*)(*args++);
517 float c = *(float*)(*args++);
518 float d = *(float*)(*args++);
519 int z = *(int*)(*args++);
520 float r=a+b+c+d+z;
521 fprintf(out,"float f(4*float,int):(%g,%g,%g,%g,%d)",a,b,c,d,z);
522 fflush(out);
523 *(float*)retp = r;
524 }}
f_f7i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)525 void f_f7i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
526 {
527 if (data != (void*)&f_f7i) { fprintf(out,"wrong data for f_f7i\n"); exit(1); }
528 {float a = *(float*)(*args++);
529 float b = *(float*)(*args++);
530 float c = *(float*)(*args++);
531 float d = *(float*)(*args++);
532 float e = *(float*)(*args++);
533 float f = *(float*)(*args++);
534 float g = *(float*)(*args++);
535 int z = *(int*)(*args++);
536 float r=a+b+c+d+e+f+g+z;
537 fprintf(out,"float f(7*float,int):(%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,z);
538 fflush(out);
539 *(float*)retp = r;
540 }}
f_f8i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)541 void f_f8i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
542 {
543 if (data != (void*)&f_f8i) { fprintf(out,"wrong data for f_f8i\n"); exit(1); }
544 {float a = *(float*)(*args++);
545 float b = *(float*)(*args++);
546 float c = *(float*)(*args++);
547 float d = *(float*)(*args++);
548 float e = *(float*)(*args++);
549 float f = *(float*)(*args++);
550 float g = *(float*)(*args++);
551 float h = *(float*)(*args++);
552 int z = *(int*)(*args++);
553 float r=a+b+c+d+e+f+g+h+z;
554 fprintf(out,"float f(8*float,int):(%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,z);
555 fflush(out);
556 *(float*)retp = r;
557 }}
f_f12i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)558 void f_f12i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
559 {
560 if (data != (void*)&f_f12i) { fprintf(out,"wrong data for f_f12i\n"); exit(1); }
561 {float a = *(float*)(*args++);
562 float b = *(float*)(*args++);
563 float c = *(float*)(*args++);
564 float d = *(float*)(*args++);
565 float e = *(float*)(*args++);
566 float f = *(float*)(*args++);
567 float g = *(float*)(*args++);
568 float h = *(float*)(*args++);
569 float i = *(float*)(*args++);
570 float j = *(float*)(*args++);
571 float k = *(float*)(*args++);
572 float l = *(float*)(*args++);
573 int z = *(int*)(*args++);
574 float r=a+b+c+d+e+f+g+h+i+j+k+l+z;
575 fprintf(out,"float f(12*float,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,z);
576 fflush(out);
577 *(float*)retp = r;
578 }}
f_f13i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)579 void f_f13i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
580 {
581 if (data != (void*)&f_f13i) { fprintf(out,"wrong data for f_f13i\n"); exit(1); }
582 {float a = *(float*)(*args++);
583 float b = *(float*)(*args++);
584 float c = *(float*)(*args++);
585 float d = *(float*)(*args++);
586 float e = *(float*)(*args++);
587 float f = *(float*)(*args++);
588 float g = *(float*)(*args++);
589 float h = *(float*)(*args++);
590 float i = *(float*)(*args++);
591 float j = *(float*)(*args++);
592 float k = *(float*)(*args++);
593 float l = *(float*)(*args++);
594 float m = *(float*)(*args++);
595 int z = *(int*)(*args++);
596 float r=a+b+c+d+e+f+g+h+i+j+k+l+m+z;
597 fprintf(out,"float f(13*float,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,m,z);
598 fflush(out);
599 *(float*)retp = r;
600 }}
d_di_simulator(ffi_cif * cif,void * retp,void ** args,void * data)601 void d_di_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
602 {
603 if (data != (void*)&d_di) { fprintf(out,"wrong data for d_di\n"); exit(1); }
604 {double a = *(double*)(*args++);
605 int z = *(int*)(*args++);
606 double r=a+z;
607 fprintf(out,"double f(double,int):(%g,%d)",a,z);
608 fflush(out);
609 *(double*)retp = r;
610 }}
d_d2i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)611 void d_d2i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
612 {
613 if (data != (void*)&d_d2i) { fprintf(out,"wrong data for d_d2i\n"); exit(1); }
614 {double a = *(double*)(*args++);
615 double b = *(double*)(*args++);
616 int z = *(int*)(*args++);
617 double r=a+b+z;
618 fprintf(out,"double f(2*double,int):(%g,%g,%d)",a,b,z);
619 fflush(out);
620 *(double*)retp = r;
621 }}
d_d3i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)622 void d_d3i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
623 {
624 if (data != (void*)&d_d3i) { fprintf(out,"wrong data for d_d3i\n"); exit(1); }
625 {double a = *(double*)(*args++);
626 double b = *(double*)(*args++);
627 double c = *(double*)(*args++);
628 int z = *(int*)(*args++);
629 double r=a+b+c+z;
630 fprintf(out,"double f(3*double,int):(%g,%g,%g,%d)",a,b,c,z);
631 fflush(out);
632 *(double*)retp = r;
633 }}
d_d4i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)634 void d_d4i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
635 {
636 if (data != (void*)&d_d4i) { fprintf(out,"wrong data for d_d4i\n"); exit(1); }
637 {double a = *(double*)(*args++);
638 double b = *(double*)(*args++);
639 double c = *(double*)(*args++);
640 double d = *(double*)(*args++);
641 int z = *(int*)(*args++);
642 double r=a+b+c+d+z;
643 fprintf(out,"double f(4*double,int):(%g,%g,%g,%g,%d)",a,b,c,d,z);
644 fflush(out);
645 *(double*)retp = r;
646 }}
d_d7i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)647 void d_d7i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
648 {
649 if (data != (void*)&d_d7i) { fprintf(out,"wrong data for d_d7i\n"); exit(1); }
650 {double a = *(double*)(*args++);
651 double b = *(double*)(*args++);
652 double c = *(double*)(*args++);
653 double d = *(double*)(*args++);
654 double e = *(double*)(*args++);
655 double f = *(double*)(*args++);
656 double g = *(double*)(*args++);
657 int z = *(int*)(*args++);
658 double r=a+b+c+d+e+f+g+z;
659 fprintf(out,"double f(7*double,int):(%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,z);
660 fflush(out);
661 *(double*)retp = r;
662 }}
d_d8i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)663 void d_d8i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
664 {
665 if (data != (void*)&d_d8i) { fprintf(out,"wrong data for d_d8i\n"); exit(1); }
666 {double a = *(double*)(*args++);
667 double b = *(double*)(*args++);
668 double c = *(double*)(*args++);
669 double d = *(double*)(*args++);
670 double e = *(double*)(*args++);
671 double f = *(double*)(*args++);
672 double g = *(double*)(*args++);
673 double h = *(double*)(*args++);
674 int z = *(int*)(*args++);
675 double r=a+b+c+d+e+f+g+h+z;
676 fprintf(out,"double f(8*double,int):(%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,z);
677 fflush(out);
678 *(double*)retp = r;
679 }}
d_d12i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)680 void d_d12i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
681 {
682 if (data != (void*)&d_d12i) { fprintf(out,"wrong data for d_d12i\n"); exit(1); }
683 {double a = *(double*)(*args++);
684 double b = *(double*)(*args++);
685 double c = *(double*)(*args++);
686 double d = *(double*)(*args++);
687 double e = *(double*)(*args++);
688 double f = *(double*)(*args++);
689 double g = *(double*)(*args++);
690 double h = *(double*)(*args++);
691 double i = *(double*)(*args++);
692 double j = *(double*)(*args++);
693 double k = *(double*)(*args++);
694 double l = *(double*)(*args++);
695 int z = *(int*)(*args++);
696 double r=a+b+c+d+e+f+g+h+i+j+k+l+z;
697 fprintf(out,"double f(12*double,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,z);
698 fflush(out);
699 *(double*)retp = r;
700 }}
d_d13i_simulator(ffi_cif * cif,void * retp,void ** args,void * data)701 void d_d13i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
702 {
703 if (data != (void*)&d_d13i) { fprintf(out,"wrong data for d_d13i\n"); exit(1); }
704 {double a = *(double*)(*args++);
705 double b = *(double*)(*args++);
706 double c = *(double*)(*args++);
707 double d = *(double*)(*args++);
708 double e = *(double*)(*args++);
709 double f = *(double*)(*args++);
710 double g = *(double*)(*args++);
711 double h = *(double*)(*args++);
712 double i = *(double*)(*args++);
713 double j = *(double*)(*args++);
714 double k = *(double*)(*args++);
715 double l = *(double*)(*args++);
716 double m = *(double*)(*args++);
717 int z = *(int*)(*args++);
718 double r=a+b+c+d+e+f+g+h+i+j+k+l+m+z;
719 fprintf(out,"double f(13*double,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,m,z);
720 fflush(out);
721 *(double*)retp = r;
722 }}
723
724 /* small structure return tests */
S1_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)725 void S1_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
726 {
727 if (data != (void*)&S1_v) { fprintf(out,"wrong data for S1_v\n"); exit(1); }
728 {Size1 r = Size1_1;
729 fprintf(out,"Size1 f(void):");
730 fflush(out);
731 *(Size1*)retp = r;
732 }}
S2_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)733 void S2_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
734 {
735 if (data != (void*)&S2_v) { fprintf(out,"wrong data for S2_v\n"); exit(1); }
736 {Size2 r = Size2_1;
737 fprintf(out,"Size2 f(void):");
738 fflush(out);
739 *(Size2*)retp = r;
740 }}
S3_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)741 void S3_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
742 {
743 if (data != (void*)&S3_v) { fprintf(out,"wrong data for S3_v\n"); exit(1); }
744 {Size3 r = Size3_1;
745 fprintf(out,"Size3 f(void):");
746 fflush(out);
747 *(Size3*)retp = r;
748 }}
S4_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)749 void S4_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
750 {
751 if (data != (void*)&S4_v) { fprintf(out,"wrong data for S4_v\n"); exit(1); }
752 {Size4 r = Size4_1;
753 fprintf(out,"Size4 f(void):");
754 fflush(out);
755 *(Size4*)retp = r;
756 }}
S7_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)757 void S7_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
758 {
759 if (data != (void*)&S7_v) { fprintf(out,"wrong data for S7_v\n"); exit(1); }
760 {Size7 r = Size7_1;
761 fprintf(out,"Size7 f(void):");
762 fflush(out);
763 *(Size7*)retp = r;
764 }}
S8_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)765 void S8_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
766 {
767 if (data != (void*)&S8_v) { fprintf(out,"wrong data for S8_v\n"); exit(1); }
768 {Size8 r = Size8_1;
769 fprintf(out,"Size8 f(void):");
770 fflush(out);
771 *(Size8*)retp = r;
772 }}
S12_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)773 void S12_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
774 {
775 if (data != (void*)&S12_v) { fprintf(out,"wrong data for S12_v\n"); exit(1); }
776 {Size12 r = Size12_1;
777 fprintf(out,"Size12 f(void):");
778 fflush(out);
779 *(Size12*)retp = r;
780 }}
S15_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)781 void S15_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
782 {
783 if (data != (void*)&S15_v) { fprintf(out,"wrong data for S15_v\n"); exit(1); }
784 {Size15 r = Size15_1;
785 fprintf(out,"Size15 f(void):");
786 fflush(out);
787 *(Size15*)retp = r;
788 }}
S16_v_simulator(ffi_cif * cif,void * retp,void ** args,void * data)789 void S16_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
790 {
791 if (data != (void*)&S16_v) { fprintf(out,"wrong data for S16_v\n"); exit(1); }
792 {Size16 r = Size16_1;
793 fprintf(out,"Size16 f(void):");
794 fflush(out);
795 *(Size16*)retp = r;
796 }}
797
798 /* structure tests */
I_III_simulator(ffi_cif * cif,void * retp,void ** args,void * data)799 void I_III_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
800 {
801 if (data != (void*)&I_III) { fprintf(out,"wrong data for I_III\n"); exit(1); }
802 {Int a = *(Int*)(*args++);
803 Int b = *(Int*)(*args++);
804 Int c = *(Int*)(*args++);
805 Int r;
806 r.x = a.x + b.x + c.x;
807 fprintf(out,"Int f(Int,Int,Int):({%d},{%d},{%d})",a.x,b.x,c.x);
808 fflush(out);
809 *(Int*)retp = r;
810 }}
C_CdC_simulator(ffi_cif * cif,void * retp,void ** args,void * data)811 void C_CdC_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
812 {
813 if (data != (void*)&C_CdC) { fprintf(out,"wrong data for C_CdC\n"); exit(1); }
814 {Char a = *(Char*)(*args++);
815 double b = *(double*)(*args++);
816 Char c = *(Char*)(*args++);
817 Char r;
818 r.x = (a.x + c.x)/2;
819 fprintf(out,"Char f(Char,double,Char):({'%c'},%g,{'%c'})",a.x,b,c.x);
820 fflush(out);
821 *(Char*)retp = r;
822 }}
F_Ffd_simulator(ffi_cif * cif,void * retp,void ** args,void * data)823 void F_Ffd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
824 {
825 if (data != (void*)&F_Ffd) { fprintf(out,"wrong data for F_Ffd\n"); exit(1); }
826 {Float a = *(Float*)(*args++);
827 float b = *(float*)(*args++);
828 double c = *(double*)(*args++);
829 Float r;
830 r.x = a.x + b + c;
831 fprintf(out,"Float f(Float,float,double):({%g},%g,%g)",a.x,b,c);
832 fflush(out);
833 *(Float*)retp = r;
834 }}
D_fDd_simulator(ffi_cif * cif,void * retp,void ** args,void * data)835 void D_fDd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
836 {
837 if (data != (void*)&D_fDd) { fprintf(out,"wrong data for D_fDd\n"); exit(1); }
838 {float a = *(float*)(*args++);
839 Double b = *(Double*)(*args++);
840 double c = *(double*)(*args++);
841 Double r;
842 r.x = a + b.x + c;
843 fprintf(out,"Double f(float,Double,double):(%g,{%g},%g)",a,b.x,c);
844 fflush(out);
845 *(Double*)retp = r;
846 }}
D_Dfd_simulator(ffi_cif * cif,void * retp,void ** args,void * data)847 void D_Dfd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
848 {
849 if (data != (void*)&D_Dfd) { fprintf(out,"wrong data for D_Dfd\n"); exit(1); }
850 {Double a = *(Double*)(*args++);
851 float b = *(float*)(*args++);
852 double c = *(double*)(*args++);
853 Double r;
854 r.x = a.x + b + c;
855 fprintf(out,"Double f(Double,float,double):({%g},%g,%g)",a.x,b,c);
856 fflush(out);
857 *(Double*)retp = r;
858 }}
J_JiJ_simulator(ffi_cif * cif,void * retp,void ** args,void * data)859 void J_JiJ_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
860 {
861 if (data != (void*)&J_JiJ) { fprintf(out,"wrong data for J_JiJ\n"); exit(1); }
862 {J a = *(J*)(*args++);
863 int b= *(int*)(*args++);
864 J c = *(J*)(*args++);
865 J r;
866 r.l1 = a.l1+c.l1; r.l2 = a.l2+b+c.l2;
867 fprintf(out,"J f(J,int,J):({%ld,%ld},%d,{%ld,%ld})",a.l1,a.l2,b,c.l1,c.l2);
868 fflush(out);
869 *(J*)retp = r;
870 }}
871 #ifndef SKIP_EXTRA_STRUCTS
T_TcT_simulator(ffi_cif * cif,void * retp,void ** args,void * data)872 void T_TcT_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
873 {
874 if (data != (void*)&T_TcT) { fprintf(out,"wrong data for T_TcT\n"); exit(1); }
875 {T a = *(T*)(*args++);
876 char b = *(char*)(*args++);
877 T c = *(T*)(*args++);
878 T r;
879 r.c[0]='b'; r.c[1]=c.c[1]; r.c[2]=c.c[2];
880 fprintf(out,"T f(T,char,T):({\"%c%c%c\"},'%c',{\"%c%c%c\"})",a.c[0],a.c[1],a.c[2],b,c.c[0],c.c[1],c.c[2]);
881 fflush(out);
882 *(T*)retp = r;
883 }}
X_BcdB_simulator(ffi_cif * cif,void * retp,void ** args,void * data)884 void X_BcdB_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
885 {
886 if (data != (void*)&X_BcdB) { fprintf(out,"wrong data for X_BcdB\n"); exit(1); }
887 {B a = *(B*)(*args++);
888 char b = *(char*)(*args++);
889 double c = *(double*)(*args++);
890 B d = *(B*)(*args++);
891 static X xr={"return val",'R'};
892 X r;
893 r = xr;
894 r.c1 = b;
895 fprintf(out,"X f(B,char,double,B):({%g,{%d,%d,%d}},'%c',%g,{%g,{%d,%d,%d}})",
896 a.d,a.i[0],a.i[1],a.i[2],b,c,d.d,d.i[0],d.i[1],d.i[2]);
897 fflush(out);
898 *(X*)retp = r;
899 }}
900 #endif
901
902 /* gpargs boundary tests */
l_l0K_simulator(ffi_cif * cif,void * retp,void ** args,void * data)903 void l_l0K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
904 {
905 if (data != (void*)&l_l0K) { fprintf(out,"wrong data for l_l0K\n"); exit(1); }
906 {K b = *(K*)(*args++);
907 long c = *(long*)(*args++);
908 long r = b.l1 + b.l2 + b.l3 + b.l4 + c;
909 fprintf(out,"long f(K,long):(%ld,%ld,%ld,%ld,%ld)",b.l1,b.l2,b.l3,b.l4,c);
910 fflush(out);
911 *(ffi_arg*)retp = r;
912 }}
l_l1K_simulator(ffi_cif * cif,void * retp,void ** args,void * data)913 void l_l1K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
914 {
915 if (data != (void*)&l_l1K) { fprintf(out,"wrong data for l_l1K\n"); exit(1); }
916 {long a1 = *(long*)(*args++);
917 K b = *(K*)(*args++);
918 long c = *(long*)(*args++);
919 long r = a1 + b.l1 + b.l2 + b.l3 + b.l4 + c;
920 fprintf(out,"long f(long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld)",a1,b.l1,b.l2,b.l3,b.l4,c);
921 fflush(out);
922 *(ffi_arg*)retp = r;
923 }}
l_l2K_simulator(ffi_cif * cif,void * retp,void ** args,void * data)924 void l_l2K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
925 {
926 if (data != (void*)&l_l2K) { fprintf(out,"wrong data for l_l2K\n"); exit(1); }
927 {long a1 = *(long*)(*args++);
928 long a2 = *(long*)(*args++);
929 K b = *(K*)(*args++);
930 long c = *(long*)(*args++);
931 long r = a1 + a2 + b.l1 + b.l2 + b.l3 + b.l4 + c;
932 fprintf(out,"long f(2*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,b.l1,b.l2,b.l3,b.l4,c);
933 fflush(out);
934 *(ffi_arg*)retp = r;
935 }}
l_l3K_simulator(ffi_cif * cif,void * retp,void ** args,void * data)936 void l_l3K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
937 {
938 if (data != (void*)&l_l3K) { fprintf(out,"wrong data for l_l3K\n"); exit(1); }
939 {long a1 = *(long*)(*args++);
940 long a2 = *(long*)(*args++);
941 long a3 = *(long*)(*args++);
942 K b = *(K*)(*args++);
943 long c = *(long*)(*args++);
944 long r = a1 + a2 + a3 + b.l1 + b.l2 + b.l3 + b.l4 + c;
945 fprintf(out,"long f(3*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,b.l1,b.l2,b.l3,b.l4,c);
946 fflush(out);
947 *(ffi_arg*)retp = r;
948 }}
l_l4K_simulator(ffi_cif * cif,void * retp,void ** args,void * data)949 void l_l4K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
950 {
951 if (data != (void*)&l_l4K) { fprintf(out,"wrong data for l_l4K\n"); exit(1); }
952 {long a1 = *(long*)(*args++);
953 long a2 = *(long*)(*args++);
954 long a3 = *(long*)(*args++);
955 long a4 = *(long*)(*args++);
956 K b = *(K*)(*args++);
957 long c = *(long*)(*args++);
958 long r = a1 + a2 + a3 + a4 + b.l1 + b.l2 + b.l3 + b.l4 + c;
959 fprintf(out,"long f(4*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,a4,b.l1,b.l2,b.l3,b.l4,c);
960 fflush(out);
961 *(ffi_arg*)retp = r;
962 }}
l_l5K_simulator(ffi_cif * cif,void * retp,void ** args,void * data)963 void l_l5K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
964 {
965 if (data != (void*)&l_l5K) { fprintf(out,"wrong data for l_l5K\n"); exit(1); }
966 {long a1 = *(long*)(*args++);
967 long a2 = *(long*)(*args++);
968 long a3 = *(long*)(*args++);
969 long a4 = *(long*)(*args++);
970 long a5 = *(long*)(*args++);
971 K b = *(K*)(*args++);
972 long c = *(long*)(*args++);
973 long r = a1 + a2 + a3 + a4 + a5 + b.l1 + b.l2 + b.l3 + b.l4 + c;
974 fprintf(out,"long f(5*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,a4,a5,b.l1,b.l2,b.l3,b.l4,c);
975 fflush(out);
976 *(ffi_arg*)retp = r;
977 }}
l_l6K_simulator(ffi_cif * cif,void * retp,void ** args,void * data)978 void l_l6K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
979 {
980 if (data != (void*)&l_l6K) { fprintf(out,"wrong data for l_l6K\n"); exit(1); }
981 {long a1 = *(long*)(*args++);
982 long a2 = *(long*)(*args++);
983 long a3 = *(long*)(*args++);
984 long a4 = *(long*)(*args++);
985 long a5 = *(long*)(*args++);
986 long a6 = *(long*)(*args++);
987 K b = *(K*)(*args++);
988 long c = *(long*)(*args++);
989 long r = a1 + a2 + a3 + a4 + a5 + a6 + b.l1 + b.l2 + b.l3 + b.l4 + c;
990 fprintf(out,"long f(6*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,a4,a5,a6,b.l1,b.l2,b.l3,b.l4,c);
991 fflush(out);
992 *(ffi_arg*)retp = r;
993 }}
f_f17l3L_simulator(ffi_cif * cif,void * retp,void ** args,void * data)994 void f_f17l3L_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
995 {
996 if (data != (void*)&f_f17l3L) { fprintf(out,"wrong data for f_f17l3L\n"); exit(1); }
997 {float a = *(float*)(*args++);
998 float b = *(float*)(*args++);
999 float c = *(float*)(*args++);
1000 float d = *(float*)(*args++);
1001 float e = *(float*)(*args++);
1002 float f = *(float*)(*args++);
1003 float g = *(float*)(*args++);
1004 float h = *(float*)(*args++);
1005 float i = *(float*)(*args++);
1006 float j = *(float*)(*args++);
1007 float k = *(float*)(*args++);
1008 float l = *(float*)(*args++);
1009 float m = *(float*)(*args++);
1010 float n = *(float*)(*args++);
1011 float o = *(float*)(*args++);
1012 float p = *(float*)(*args++);
1013 float q = *(float*)(*args++);
1014 long s = *(long*)(*args++);
1015 long t = *(long*)(*args++);
1016 long u = *(long*)(*args++);
1017 L z = *(L*)(*args++);
1018 float r = a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+s+t+u+z.l1+z.l2+z.l3+z.l4+z.l5+z.l6;
1019 fprintf(out,"float f(17*float,3*int,L):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,z.l1,z.l2,z.l3,z.l4,z.l5,z.l6);
1020 fflush(out);
1021 *(float*)retp = r;
1022 }}
d_d17l3L_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1023 void d_d17l3L_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1024 {
1025 if (data != (void*)&d_d17l3L) { fprintf(out,"wrong data for d_d17l3L\n"); exit(1); }
1026 {double a = *(double*)(*args++);
1027 double b = *(double*)(*args++);
1028 double c = *(double*)(*args++);
1029 double d = *(double*)(*args++);
1030 double e = *(double*)(*args++);
1031 double f = *(double*)(*args++);
1032 double g = *(double*)(*args++);
1033 double h = *(double*)(*args++);
1034 double i = *(double*)(*args++);
1035 double j = *(double*)(*args++);
1036 double k = *(double*)(*args++);
1037 double l = *(double*)(*args++);
1038 double m = *(double*)(*args++);
1039 double n = *(double*)(*args++);
1040 double o = *(double*)(*args++);
1041 double p = *(double*)(*args++);
1042 double q = *(double*)(*args++);
1043 long s = *(long*)(*args++);
1044 long t = *(long*)(*args++);
1045 long u = *(long*)(*args++);
1046 L z = *(L*)(*args++);
1047 double r = a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+s+t+u+z.l1+z.l2+z.l3+z.l4+z.l5+z.l6;
1048 fprintf(out,"double f(17*double,3*int,L):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,z.l1,z.l2,z.l3,z.l4,z.l5,z.l6);
1049 fflush(out);
1050 *(double*)retp = r;
1051 }}
ll_l2ll_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1052 void ll_l2ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1053 {
1054 if (data != (void*)&ll_l2ll) { fprintf(out,"wrong data for ll_l2ll\n"); exit(1); }
1055 {long a1 = *(long*)(*args++);
1056 long a2 = *(long*)(*args++);
1057 long long b = *(long long *)(*args++);
1058 long c = *(long*)(*args++);
1059 long long r = (long long) (a1 + a2) + b + c;
1060 fprintf(out,"long long f(2*long,long long,long):(%ld,%ld,0x%lx%08lx,%ld)",a1,a2,(long)(b>>32),(long)(b&0xffffffff),c);
1061 fflush(out);
1062 *(long long *)retp = r;
1063 }}
ll_l3ll_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1064 void ll_l3ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1065 {
1066 if (data != (void*)&ll_l3ll) { fprintf(out,"wrong data for ll_l3ll\n"); exit(1); }
1067 {long a1 = *(long*)(*args++);
1068 long a2 = *(long*)(*args++);
1069 long a3 = *(long*)(*args++);
1070 long long b = *(long long *)(*args++);
1071 long c = *(long*)(*args++);
1072 long long r = (long long) (a1 + a2 + a3) + b + c;
1073 fprintf(out,"long long f(3*long,long long,long):(%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,(long)(b>>32),(long)(b&0xffffffff),c);
1074 fflush(out);
1075 *(long long *)retp = r;
1076 }}
ll_l4ll_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1077 void ll_l4ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1078 {
1079 if (data != (void*)&ll_l4ll) { fprintf(out,"wrong data for ll_l4ll\n"); exit(1); }
1080 {long a1 = *(long*)(*args++);
1081 long a2 = *(long*)(*args++);
1082 long a3 = *(long*)(*args++);
1083 long a4 = *(long*)(*args++);
1084 long long b = *(long long *)(*args++);
1085 long c = *(long*)(*args++);
1086 long long r = (long long) (a1 + a2 + a3 + a4) + b + c;
1087 fprintf(out,"long long f(4*long,long long,long):(%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,(long)(b>>32),(long)(b&0xffffffff),c);
1088 fflush(out);
1089 *(long long *)retp = r;
1090 }}
ll_l5ll_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1091 void ll_l5ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1092 {
1093 if (data != (void*)&ll_l5ll) { fprintf(out,"wrong data for ll_l5ll\n"); exit(1); }
1094 {long a1 = *(long*)(*args++);
1095 long a2 = *(long*)(*args++);
1096 long a3 = *(long*)(*args++);
1097 long a4 = *(long*)(*args++);
1098 long a5 = *(long*)(*args++);
1099 long long b = *(long long *)(*args++);
1100 long c = *(long*)(*args++);
1101 long long r = (long long) (a1 + a2 + a3 + a4 + a5) + b + c;
1102 fprintf(out,"long long f(5*long,long long,long):(%ld,%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,a5,(long)(b>>32),(long)(b&0xffffffff),c);
1103 fflush(out);
1104 *(long long *)retp = r;
1105 }}
ll_l6ll_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1106 void ll_l6ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1107 {
1108 if (data != (void*)&ll_l6ll) { fprintf(out,"wrong data for ll_l6ll\n"); exit(1); }
1109 {long a1 = *(long*)(*args++);
1110 long a2 = *(long*)(*args++);
1111 long a3 = *(long*)(*args++);
1112 long a4 = *(long*)(*args++);
1113 long a5 = *(long*)(*args++);
1114 long a6 = *(long*)(*args++);
1115 long long b = *(long long *)(*args++);
1116 long c = *(long*)(*args++);
1117 long long r = (long long) (a1 + a2 + a3 + a4 + a5 + a6) + b + c;
1118 fprintf(out,"long long f(6*long,long long,long):(%ld,%ld,%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,a5,a6,(long)(b>>32),(long)(b&0xffffffff),c);
1119 fflush(out);
1120 *(long long *)retp = r;
1121 }}
ll_l7ll_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1122 void ll_l7ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1123 {
1124 if (data != (void*)&ll_l7ll) { fprintf(out,"wrong data for ll_l7ll\n"); exit(1); }
1125 {long a1 = *(long*)(*args++);
1126 long a2 = *(long*)(*args++);
1127 long a3 = *(long*)(*args++);
1128 long a4 = *(long*)(*args++);
1129 long a5 = *(long*)(*args++);
1130 long a6 = *(long*)(*args++);
1131 long a7 = *(long*)(*args++);
1132 long long b = *(long long *)(*args++);
1133 long c = *(long*)(*args++);
1134 long long r = (long long) (a1 + a2 + a3 + a4 + a5 + a6 + a7) + b + c;
1135 fprintf(out,"long long f(7*long,long long,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,a5,a6,a7,(long)(b>>32),(long)(b&0xffffffff),c);
1136 fflush(out);
1137 *(long long *)retp = r;
1138 }}
d_l2d_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1139 void d_l2d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1140 {
1141 if (data != (void*)&d_l2d) { fprintf(out,"wrong data for d_l2d\n"); exit(1); }
1142 {long a1 = *(long*)(*args++);
1143 long a2 = *(long*)(*args++);
1144 double b = *(double*)(*args++);
1145 long c = *(long*)(*args++);
1146 double r = (double) (a1 + a2) + b + c;
1147 fprintf(out,"double f(2*long,double,long):(%ld,%ld,%g,%ld)",a1,a2,b,c);
1148 fflush(out);
1149 *(double*)retp = r;
1150 }}
d_l3d_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1151 void d_l3d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1152 {
1153 if (data != (void*)&d_l3d) { fprintf(out,"wrong data for d_l3d\n"); exit(1); }
1154 {long a1 = *(long*)(*args++);
1155 long a2 = *(long*)(*args++);
1156 long a3 = *(long*)(*args++);
1157 double b = *(double*)(*args++);
1158 long c = *(long*)(*args++);
1159 double r = (double) (a1 + a2 + a3) + b + c;
1160 fprintf(out,"double f(3*long,double,long):(%ld,%ld,%ld,%g,%ld)",a1,a2,a3,b,c);
1161 fflush(out);
1162 *(double*)retp = r;
1163 }}
d_l4d_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1164 void d_l4d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1165 {
1166 if (data != (void*)&d_l4d) { fprintf(out,"wrong data for d_l4d\n"); exit(1); }
1167 {long a1 = *(long*)(*args++);
1168 long a2 = *(long*)(*args++);
1169 long a3 = *(long*)(*args++);
1170 long a4 = *(long*)(*args++);
1171 double b = *(double*)(*args++);
1172 long c = *(long*)(*args++);
1173 double r = (double) (a1 + a2 + a3 + a4) + b + c;
1174 fprintf(out,"double f(4*long,double,long):(%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,b,c);
1175 fflush(out);
1176 *(double*)retp = r;
1177 }}
d_l5d_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1178 void d_l5d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1179 {
1180 if (data != (void*)&d_l5d) { fprintf(out,"wrong data for d_l5d\n"); exit(1); }
1181 {long a1 = *(long*)(*args++);
1182 long a2 = *(long*)(*args++);
1183 long a3 = *(long*)(*args++);
1184 long a4 = *(long*)(*args++);
1185 long a5 = *(long*)(*args++);
1186 double b = *(double*)(*args++);
1187 long c = *(long*)(*args++);
1188 double r = (double) (a1 + a2 + a3 + a4 + a5) + b + c;
1189 fprintf(out,"double f(5*long,double,long):(%ld,%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,a5,b,c);
1190 fflush(out);
1191 *(double*)retp = r;
1192 }}
d_l6d_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1193 void d_l6d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1194 {
1195 if (data != (void*)&d_l6d) { fprintf(out,"wrong data for d_l6d\n"); exit(1); }
1196 {long a1 = *(long*)(*args++);
1197 long a2 = *(long*)(*args++);
1198 long a3 = *(long*)(*args++);
1199 long a4 = *(long*)(*args++);
1200 long a5 = *(long*)(*args++);
1201 long a6 = *(long*)(*args++);
1202 double b = *(double*)(*args++);
1203 long c = *(long*)(*args++);
1204 double r = (double) (a1 + a2 + a3 + a4 + a5 + a6) + b + c;
1205 fprintf(out,"double f(6*long,double,long):(%ld,%ld,%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,a5,a6,b,c);
1206 fflush(out);
1207 *(double*)retp = r;
1208 }}
d_l7d_simulator(ffi_cif * cif,void * retp,void ** args,void * data)1209 void d_l7d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data)
1210 {
1211 if (data != (void*)&d_l7d) { fprintf(out,"wrong data for d_l7d\n"); exit(1); }
1212 {long a1 = *(long*)(*args++);
1213 long a2 = *(long*)(*args++);
1214 long a3 = *(long*)(*args++);
1215 long a4 = *(long*)(*args++);
1216 long a5 = *(long*)(*args++);
1217 long a6 = *(long*)(*args++);
1218 long a7 = *(long*)(*args++);
1219 double b = *(double*)(*args++);
1220 long c = *(long*)(*args++);
1221 double r = (double) (a1 + a2 + a3 + a4 + a5 + a6 + a7) + b + c;
1222 fprintf(out,"double f(7*long,double,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,a5,a6,a7,b,c);
1223 fflush(out);
1224 *(double*)retp = r;
1225 }}
1226
1227
1228 /*
1229 * The way we run these tests - first call the function directly, then
1230 * through vacall() - there is the danger that arguments or results seem
1231 * to be passed correctly, but what we are seeing are in fact the vestiges
1232 * (traces) or the previous call. This may seriously fake the test.
1233 * Avoid this by clearing the registers between the first and the second call.
1234 */
clear_traces_i(long a,long b,long c,long d,long e,long f,long g,long h,long i,long j,long k,long l,long m,long n,long o,long p)1235 long clear_traces_i (long a, long b, long c, long d, long e, long f, long g, long h,
1236 long i, long j, long k, long l, long m, long n, long o, long p)
1237 { return 0; }
clear_traces_f(float a,float b,float c,float d,float e,float f,float g,float h,float i,float j,float k,float l,float m,float n,float o,float p)1238 float clear_traces_f (float a, float b, float c, float d, float e, float f, float g,
1239 float h, float i, float j, float k, float l, float m, float n,
1240 float o, float p)
1241 { return 0.0; }
clear_traces_d(double a,double b,double c,double d,double e,double f,double g,double h,double i,double j,double k,double l,double m,double n,double o,double p)1242 double clear_traces_d (double a, double b, double c, double d, double e, double f, double g,
1243 double h, double i, double j, double k, double l, double m, double n,
1244 double o, double p)
1245 { return 0.0; }
clear_traces_J(void)1246 J clear_traces_J (void)
1247 { J j; j.l1 = j.l2 = 0; return j; }
clear_traces(void)1248 void clear_traces (void)
1249 { clear_traces_i(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
1250 clear_traces_f(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0);
1251 clear_traces_d(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0);
1252 clear_traces_J();
1253 }
1254
main(void)1255 int main (void)
1256 {
1257 void* callback_code;
1258 void* callback_writable;
1259 #define ALLOC_CALLBACK() \
1260 callback_writable = ffi_closure_alloc(sizeof(ffi_closure),&callback_code); \
1261 if (!callback_writable) abort()
1262 #define PREP_CALLBACK(cif,simulator,data) \
1263 if (ffi_prep_closure_loc(callback_writable,&(cif),simulator,data,callback_code) != FFI_OK) abort()
1264 #define FREE_CALLBACK() \
1265 ffi_closure_free(callback_writable)
1266
1267 ffi_type_char = (char)(-1) < 0 ? ffi_type_schar : ffi_type_uchar;
1268 out = stdout;
1269
1270 #if (!defined(DGTEST)) || DGTEST == 1
1271 /* void tests */
1272 v_v();
1273 clear_traces();
1274 ALLOC_CALLBACK();
1275 {
1276 ffi_cif cif;
1277 FFI_PREP_CIF_NOARGS(cif,ffi_type_void);
1278 PREP_CALLBACK(cif,v_v_simulator,(void*)&v_v);
1279 ((void (ABI_ATTR *) (void)) callback_code) ();
1280 }
1281 FREE_CALLBACK();
1282 #endif
1283
1284 /* int tests */
1285 { int ir;
1286
1287 #if (!defined(DGTEST)) || DGTEST == 2
1288 ir = i_v();
1289 fprintf(out,"->%d\n",ir);
1290 fflush(out);
1291 ir = 0; clear_traces();
1292 ALLOC_CALLBACK();
1293 {
1294 ffi_cif cif;
1295 FFI_PREP_CIF_NOARGS(cif,ffi_type_sint);
1296 PREP_CALLBACK(cif,i_v_simulator,(void*)&i_v);
1297 ir = ((int (ABI_ATTR *) (void)) callback_code) ();
1298 }
1299 FREE_CALLBACK();
1300 fprintf(out,"->%d\n",ir);
1301 fflush(out);
1302 #endif
1303
1304 #if (!defined(DGTEST)) || DGTEST == 3
1305 ir = i_i(i1);
1306 fprintf(out,"->%d\n",ir);
1307 fflush(out);
1308 ir = 0; clear_traces();
1309 ALLOC_CALLBACK();
1310 {
1311 ffi_type* argtypes[] = { &ffi_type_sint };
1312 ffi_cif cif;
1313 FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
1314 PREP_CALLBACK(cif,i_i_simulator,(void*)&i_i);
1315 ir = ((int (ABI_ATTR *) (int)) callback_code) (i1);
1316 }
1317 FREE_CALLBACK();
1318 fprintf(out,"->%d\n",ir);
1319 fflush(out);
1320 #endif
1321
1322 #if (!defined(DGTEST)) || DGTEST == 4
1323 ir = i_i2(i1,i2);
1324 fprintf(out,"->%d\n",ir);
1325 fflush(out);
1326 ir = 0; clear_traces();
1327 ALLOC_CALLBACK();
1328 {
1329 ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint };
1330 ffi_cif cif;
1331 FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
1332 PREP_CALLBACK(cif,i_i2_simulator,(void*)&i_i2);
1333 ir = ((int (ABI_ATTR *) (int,int)) callback_code) (i1,i2);
1334 }
1335 FREE_CALLBACK();
1336 fprintf(out,"->%d\n",ir);
1337 fflush(out);
1338 #endif
1339
1340 #if (!defined(DGTEST)) || DGTEST == 5
1341 ir = i_i4(i1,i2,i3,i4);
1342 fprintf(out,"->%d\n",ir);
1343 fflush(out);
1344 ir = 0; clear_traces();
1345 ALLOC_CALLBACK();
1346 {
1347 ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint };
1348 ffi_cif cif;
1349 FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
1350 PREP_CALLBACK(cif,i_i4_simulator,(void*)&i_i4);
1351 ir = ((int (ABI_ATTR *) (int,int,int,int)) callback_code) (i1,i2,i3,i4);
1352 }
1353 FREE_CALLBACK();
1354 fprintf(out,"->%d\n",ir);
1355 fflush(out);
1356 #endif
1357
1358 #if (!defined(DGTEST)) || DGTEST == 6
1359 ir = i_i8(i1,i2,i3,i4,i5,i6,i7,i8);
1360 fprintf(out,"->%d\n",ir);
1361 fflush(out);
1362 ir = 0; clear_traces();
1363 ALLOC_CALLBACK();
1364 {
1365 ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint };
1366 ffi_cif cif;
1367 FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
1368 PREP_CALLBACK(cif,i_i8_simulator,(void*)&i_i8);
1369 ir = ((int (ABI_ATTR *) (int,int,int,int,int,int,int,int)) callback_code) (i1,i2,i3,i4,i5,i6,i7,i8);
1370 }
1371 FREE_CALLBACK();
1372 fprintf(out,"->%d\n",ir);
1373 fflush(out);
1374 #endif
1375
1376 #if (!defined(DGTEST)) || DGTEST == 7
1377 ir = i_i16(i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16);
1378 fprintf(out,"->%d\n",ir);
1379 fflush(out);
1380 ir = 0; clear_traces();
1381 ALLOC_CALLBACK();
1382 {
1383 ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint };
1384 ffi_cif cif;
1385 FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
1386 PREP_CALLBACK(cif,i_i16_simulator,(void*)&i_i16);
1387 ir = ((int (ABI_ATTR *) (int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int)) callback_code) (i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16);
1388 }
1389 FREE_CALLBACK();
1390 fprintf(out,"->%d\n",ir);
1391 fflush(out);
1392 #endif
1393 }
1394
1395 /* float tests */
1396 { float fr;
1397
1398 #if (!defined(DGTEST)) || DGTEST == 8
1399 fr = f_f(f1);
1400 fprintf(out,"->%g\n",fr);
1401 fflush(out);
1402 fr = 0.0; clear_traces();
1403 ALLOC_CALLBACK();
1404 {
1405 ffi_type* argtypes[] = { &ffi_type_float };
1406 ffi_cif cif;
1407 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1408 PREP_CALLBACK(cif,f_f_simulator,(void*)&f_f);
1409 fr = ((float (ABI_ATTR *) (float)) callback_code) (f1);
1410 }
1411 FREE_CALLBACK();
1412 fprintf(out,"->%g\n",fr);
1413 fflush(out);
1414 #endif
1415
1416 #if (!defined(DGTEST)) || DGTEST == 9
1417 fr = f_f2(f1,f2);
1418 fprintf(out,"->%g\n",fr);
1419 fflush(out);
1420 fr = 0.0; clear_traces();
1421 ALLOC_CALLBACK();
1422 {
1423 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float };
1424 ffi_cif cif;
1425 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1426 PREP_CALLBACK(cif,f_f2_simulator,(void*)&f_f2);
1427 fr = ((float (ABI_ATTR *) (float,float)) callback_code) (f1,f2);
1428 }
1429 FREE_CALLBACK();
1430 fprintf(out,"->%g\n",fr);
1431 fflush(out);
1432 #endif
1433
1434 #if (!defined(DGTEST)) || DGTEST == 10
1435 fr = f_f4(f1,f2,f3,f4);
1436 fprintf(out,"->%g\n",fr);
1437 fflush(out);
1438 fr = 0.0; clear_traces();
1439 ALLOC_CALLBACK();
1440 {
1441 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float };
1442 ffi_cif cif;
1443 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1444 PREP_CALLBACK(cif,f_f4_simulator,(void*)&f_f4);
1445 fr = ((float (ABI_ATTR *) (float,float,float,float)) callback_code) (f1,f2,f3,f4);
1446 }
1447 FREE_CALLBACK();
1448 fprintf(out,"->%g\n",fr);
1449 fflush(out);
1450 #endif
1451
1452 #if (!defined(DGTEST)) || DGTEST == 11
1453 fr = f_f8(f1,f2,f3,f4,f5,f6,f7,f8);
1454 fprintf(out,"->%g\n",fr);
1455 fflush(out);
1456 fr = 0.0; clear_traces();
1457 ALLOC_CALLBACK();
1458 {
1459 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float };
1460 ffi_cif cif;
1461 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1462 PREP_CALLBACK(cif,f_f8_simulator,(void*)&f_f8);
1463 fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8);
1464 }
1465 FREE_CALLBACK();
1466 fprintf(out,"->%g\n",fr);
1467 fflush(out);
1468 #endif
1469
1470 #if (!defined(DGTEST)) || DGTEST == 12
1471 fr = f_f16(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16);
1472 fprintf(out,"->%g\n",fr);
1473 fflush(out);
1474 fr = 0.0; clear_traces();
1475 ALLOC_CALLBACK();
1476 {
1477 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float };
1478 ffi_cif cif;
1479 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1480 PREP_CALLBACK(cif,f_f16_simulator,(void*)&f_f16);
1481 fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16);
1482 }
1483 FREE_CALLBACK();
1484 fprintf(out,"->%g\n",fr);
1485 fflush(out);
1486 #endif
1487
1488 #if (!defined(DGTEST)) || DGTEST == 13
1489 fr = f_f24(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24);
1490 fprintf(out,"->%g\n",fr);
1491 fflush(out);
1492 fr = 0.0; clear_traces();
1493 ALLOC_CALLBACK();
1494 {
1495 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float };
1496 ffi_cif cif;
1497 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1498 PREP_CALLBACK(cif,f_f24_simulator,(void*)&f_f24);
1499 fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24);
1500 }
1501 FREE_CALLBACK();
1502 fprintf(out,"->%g\n",fr);
1503 fflush(out);
1504 #endif
1505
1506 }
1507
1508 /* double tests */
1509 { double dr;
1510
1511 #if (!defined(DGTEST)) || DGTEST == 14
1512 dr = d_d(d1);
1513 fprintf(out,"->%g\n",dr);
1514 fflush(out);
1515 dr = 0.0; clear_traces();
1516 ALLOC_CALLBACK();
1517 {
1518 ffi_type* argtypes[] = { &ffi_type_double };
1519 ffi_cif cif;
1520 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1521 PREP_CALLBACK(cif,d_d_simulator,(void*)&d_d);
1522 dr = ((double (ABI_ATTR *) (double)) callback_code) (d1);
1523 }
1524 FREE_CALLBACK();
1525 fprintf(out,"->%g\n",dr);
1526 fflush(out);
1527 #endif
1528
1529 #if (!defined(DGTEST)) || DGTEST == 15
1530 dr = d_d2(d1,d2);
1531 fprintf(out,"->%g\n",dr);
1532 fflush(out);
1533 dr = 0.0; clear_traces();
1534 ALLOC_CALLBACK();
1535 {
1536 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double };
1537 ffi_cif cif;
1538 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1539 PREP_CALLBACK(cif,d_d2_simulator,(void*)&d_d2);
1540 dr = ((double (ABI_ATTR *) (double,double)) callback_code) (d1,d2);
1541 }
1542 FREE_CALLBACK();
1543 fprintf(out,"->%g\n",dr);
1544 fflush(out);
1545 #endif
1546
1547 #if (!defined(DGTEST)) || DGTEST == 16
1548 dr = d_d4(d1,d2,d3,d4);
1549 fprintf(out,"->%g\n",dr);
1550 fflush(out);
1551 dr = 0.0; clear_traces();
1552 ALLOC_CALLBACK();
1553 {
1554 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double };
1555 ffi_cif cif;
1556 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1557 PREP_CALLBACK(cif,d_d4_simulator,(void*)&d_d4);
1558 dr = ((double (ABI_ATTR *) (double,double,double,double)) callback_code) (d1,d2,d3,d4);
1559 }
1560 FREE_CALLBACK();
1561 fprintf(out,"->%g\n",dr);
1562 fflush(out);
1563 #endif
1564
1565 #if (!defined(DGTEST)) || DGTEST == 17
1566 dr = d_d8(d1,d2,d3,d4,d5,d6,d7,d8);
1567 fprintf(out,"->%g\n",dr);
1568 fflush(out);
1569 dr = 0.0; clear_traces();
1570 ALLOC_CALLBACK();
1571 {
1572 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double };
1573 ffi_cif cif;
1574 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1575 PREP_CALLBACK(cif,d_d8_simulator,(void*)&d_d8);
1576 dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8);
1577 }
1578 FREE_CALLBACK();
1579 fprintf(out,"->%g\n",dr);
1580 fflush(out);
1581 #endif
1582
1583 #if (!defined(DGTEST)) || DGTEST == 18
1584 dr = d_d16(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16);
1585 fprintf(out,"->%g\n",dr);
1586 fflush(out);
1587 dr = 0.0; clear_traces();
1588 ALLOC_CALLBACK();
1589 {
1590 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double };
1591 ffi_cif cif;
1592 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1593 PREP_CALLBACK(cif,d_d16_simulator,(void*)&d_d16);
1594 dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16);
1595 }
1596 FREE_CALLBACK();
1597 fprintf(out,"->%g\n",dr);
1598 fflush(out);
1599 #endif
1600 }
1601
1602 /* pointer tests */
1603 { void* vpr;
1604
1605 #if (!defined(DGTEST)) || DGTEST == 19
1606 vpr = vp_vpdpcpsp(&uc1,&d2,str3,&I4);
1607 fprintf(out,"->0x%p\n",vpr);
1608 fflush(out);
1609 vpr = 0; clear_traces();
1610 ALLOC_CALLBACK();
1611 {
1612 ffi_type* argtypes[] = { &ffi_type_pointer, &ffi_type_pointer, &ffi_type_pointer, &ffi_type_pointer };
1613 ffi_cif cif;
1614 FFI_PREP_CIF(cif,argtypes,ffi_type_pointer);
1615 PREP_CALLBACK(cif,vp_vpdpcpsp_simulator,(void*)&vp_vpdpcpsp);
1616 vpr = ((void* (ABI_ATTR *) (void*,double*,char*,Int*)) callback_code) (&uc1,&d2,str3,&I4);
1617 }
1618 FREE_CALLBACK();
1619 fprintf(out,"->0x%p\n",vpr);
1620 fflush(out);
1621 #endif
1622 }
1623
1624 /* mixed number tests */
1625 { uchar ucr;
1626 ushort usr;
1627 float fr;
1628 double dr;
1629 long long llr;
1630
1631 #if (!defined(DGTEST)) || DGTEST == 20
1632 ucr = uc_ucsil(uc1,us2,ui3,ul4);
1633 fprintf(out,"->%u\n",ucr);
1634 fflush(out);
1635 ucr = 0; clear_traces();
1636 ALLOC_CALLBACK();
1637 {
1638 ffi_type* argtypes[] = { &ffi_type_uchar, &ffi_type_ushort, &ffi_type_uint, &ffi_type_ulong };
1639 ffi_cif cif;
1640 FFI_PREP_CIF(cif,argtypes,ffi_type_uchar);
1641 PREP_CALLBACK(cif,uc_ucsil_simulator,(void*)&uc_ucsil);
1642 ucr = ((uchar (ABI_ATTR *) (uchar,ushort,uint,ulong)) callback_code) (uc1,us2,ui3,ul4);
1643 }
1644 FREE_CALLBACK();
1645 fprintf(out,"->%u\n",ucr);
1646 fflush(out);
1647 #endif
1648
1649 #if (!defined(DGTEST)) || DGTEST == 21
1650 dr = d_iidd(i1,i2,d3,d4);
1651 fprintf(out,"->%g\n",dr);
1652 fflush(out);
1653 dr = 0.0; clear_traces();
1654 ALLOC_CALLBACK();
1655 {
1656 ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_double, &ffi_type_double };
1657 ffi_cif cif;
1658 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1659 PREP_CALLBACK(cif,d_iidd_simulator,(void*)&d_iidd);
1660 dr = ((double (ABI_ATTR *) (int,int,double,double)) callback_code) (i1,i2,d3,d4);
1661 }
1662 FREE_CALLBACK();
1663 fprintf(out,"->%g\n",dr);
1664 fflush(out);
1665 #endif
1666
1667 #if (!defined(DGTEST)) || DGTEST == 22
1668 dr = d_iiidi(i1,i2,i3,d4,i5);
1669 fprintf(out,"->%g\n",dr);
1670 fflush(out);
1671 dr = 0.0; clear_traces();
1672 ALLOC_CALLBACK();
1673 {
1674 ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_double, &ffi_type_sint };
1675 ffi_cif cif;
1676 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1677 PREP_CALLBACK(cif,d_iiidi_simulator,(void*)&d_iiidi);
1678 dr = ((double (ABI_ATTR *) (int,int,int,double,int)) callback_code) (i1,i2,i3,d4,i5);
1679 }
1680 FREE_CALLBACK();
1681 fprintf(out,"->%g\n",dr);
1682 fflush(out);
1683 #endif
1684
1685 #if (!defined(DGTEST)) || DGTEST == 23
1686 dr = d_idid(i1,d2,i3,d4);
1687 fprintf(out,"->%g\n",dr);
1688 fflush(out);
1689 dr = 0.0; clear_traces();
1690 ALLOC_CALLBACK();
1691 {
1692 ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_double, &ffi_type_sint, &ffi_type_double };
1693 ffi_cif cif;
1694 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1695 PREP_CALLBACK(cif,d_idid_simulator,(void*)&d_idid);
1696 dr = ((double (ABI_ATTR *) (int,double,int,double)) callback_code) (i1,d2,i3,d4);
1697 }
1698 FREE_CALLBACK();
1699 fprintf(out,"->%g\n",dr);
1700 fflush(out);
1701 #endif
1702
1703 #if (!defined(DGTEST)) || DGTEST == 24
1704 dr = d_fdi(f1,d2,i3);
1705 fprintf(out,"->%g\n",dr);
1706 fflush(out);
1707 dr = 0.0; clear_traces();
1708 ALLOC_CALLBACK();
1709 {
1710 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_double, &ffi_type_sint };
1711 ffi_cif cif;
1712 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1713 PREP_CALLBACK(cif,d_fdi_simulator,(void*)&d_fdi);
1714 dr = ((double (ABI_ATTR *) (float,double,int)) callback_code) (f1,d2,i3);
1715 }
1716 FREE_CALLBACK();
1717 fprintf(out,"->%g\n",dr);
1718 fflush(out);
1719 #endif
1720
1721 #if (!defined(DGTEST)) || DGTEST == 25
1722 usr = us_cdcd(c1,d2,c3,d4);
1723 fprintf(out,"->%u\n",usr);
1724 fflush(out);
1725 usr = 0; clear_traces();
1726 ALLOC_CALLBACK();
1727 {
1728 ffi_type* argtypes[] = { &ffi_type_char, &ffi_type_double, &ffi_type_char, &ffi_type_double };
1729 ffi_cif cif;
1730 FFI_PREP_CIF(cif,argtypes,ffi_type_ushort);
1731 PREP_CALLBACK(cif,us_cdcd_simulator,(void*)&us_cdcd);
1732 usr = ((ushort (ABI_ATTR *) (char,double,char,double)) callback_code) (c1,d2,c3,d4);
1733 }
1734 FREE_CALLBACK();
1735 fprintf(out,"->%u\n",usr);
1736 fflush(out);
1737 #endif
1738
1739 #if (!defined(DGTEST)) || DGTEST == 26
1740 llr = ll_iiilli(i1,i2,i3,ll1,i13);
1741 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1742 fflush(out);
1743 llr = 0; clear_traces();
1744 ALLOC_CALLBACK();
1745 {
1746 ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_slonglong, &ffi_type_sint };
1747 ffi_cif cif;
1748 FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
1749 PREP_CALLBACK(cif,ll_iiilli_simulator,(void*)&ll_iiilli);
1750 llr = ((long long (ABI_ATTR *) (int,int,int,long long,int)) callback_code) (i1,i2,i3,ll1,i13);
1751 }
1752 FREE_CALLBACK();
1753 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1754 fflush(out);
1755 #endif
1756
1757 #if (!defined(DGTEST)) || DGTEST == 27
1758 llr = ll_flli(f13,ll1,i13);
1759 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1760 fflush(out);
1761 llr = 0; clear_traces();
1762 ALLOC_CALLBACK();
1763 {
1764 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_slonglong, &ffi_type_sint };
1765 ffi_cif cif;
1766 FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
1767 PREP_CALLBACK(cif,ll_flli_simulator,(void*)&ll_flli);
1768 llr = ((long long (ABI_ATTR *) (float,long long,int)) callback_code) (f13,ll1,i13);
1769 }
1770 FREE_CALLBACK();
1771 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1772 fflush(out);
1773 #endif
1774
1775 #if (!defined(DGTEST)) || DGTEST == 28
1776 fr = f_fi(f1,i9);
1777 fprintf(out,"->%g\n",fr);
1778 fflush(out);
1779 fr = 0.0; clear_traces();
1780 ALLOC_CALLBACK();
1781 {
1782 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_sint };
1783 ffi_cif cif;
1784 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1785 PREP_CALLBACK(cif,f_fi_simulator,(void*)&f_fi);
1786 fr = ((float (ABI_ATTR *) (float,int)) callback_code) (f1,i9);
1787 }
1788 FREE_CALLBACK();
1789 fprintf(out,"->%g\n",fr);
1790 fflush(out);
1791 #endif
1792
1793 #if (!defined(DGTEST)) || DGTEST == 29
1794 fr = f_f2i(f1,f2,i9);
1795 fprintf(out,"->%g\n",fr);
1796 fflush(out);
1797 fr = 0.0; clear_traces();
1798 ALLOC_CALLBACK();
1799 {
1800 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_sint };
1801 ffi_cif cif;
1802 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1803 PREP_CALLBACK(cif,f_f2i_simulator,(void*)&f_f2i);
1804 fr = ((float (ABI_ATTR *) (float,float,int)) callback_code) (f1,f2,i9);
1805 }
1806 FREE_CALLBACK();
1807 fprintf(out,"->%g\n",fr);
1808 fflush(out);
1809 #endif
1810
1811 #if (!defined(DGTEST)) || DGTEST == 30
1812 fr = f_f3i(f1,f2,f3,i9);
1813 fprintf(out,"->%g\n",fr);
1814 fflush(out);
1815 fr = 0.0; clear_traces();
1816 ALLOC_CALLBACK();
1817 {
1818 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
1819 ffi_cif cif;
1820 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1821 PREP_CALLBACK(cif,f_f3i_simulator,(void*)&f_f3i);
1822 fr = ((float (ABI_ATTR *) (float,float,float,int)) callback_code) (f1,f2,f3,i9);
1823 }
1824 FREE_CALLBACK();
1825 fprintf(out,"->%g\n",fr);
1826 fflush(out);
1827 #endif
1828
1829 #if (!defined(DGTEST)) || DGTEST == 31
1830 fr = f_f4i(f1,f2,f3,f4,i9);
1831 fprintf(out,"->%g\n",fr);
1832 fflush(out);
1833 fr = 0.0; clear_traces();
1834 ALLOC_CALLBACK();
1835 {
1836 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
1837 ffi_cif cif;
1838 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1839 PREP_CALLBACK(cif,f_f4i_simulator,(void*)&f_f4i);
1840 fr = ((float (ABI_ATTR *) (float,float,float,float,int)) callback_code) (f1,f2,f3,f4,i9);
1841 }
1842 FREE_CALLBACK();
1843 fprintf(out,"->%g\n",fr);
1844 fflush(out);
1845 #endif
1846
1847 #if (!defined(DGTEST)) || DGTEST == 32
1848 fr = f_f7i(f1,f2,f3,f4,f5,f6,f7,i9);
1849 fprintf(out,"->%g\n",fr);
1850 fflush(out);
1851 fr = 0.0; clear_traces();
1852 ALLOC_CALLBACK();
1853 {
1854 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
1855 ffi_cif cif;
1856 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1857 PREP_CALLBACK(cif,f_f7i_simulator,(void*)&f_f7i);
1858 fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,i9);
1859 }
1860 FREE_CALLBACK();
1861 fprintf(out,"->%g\n",fr);
1862 fflush(out);
1863 #endif
1864
1865 #if (!defined(DGTEST)) || DGTEST == 33
1866 fr = f_f8i(f1,f2,f3,f4,f5,f6,f7,f8,i9);
1867 fprintf(out,"->%g\n",fr);
1868 fflush(out);
1869 fr = 0.0; clear_traces();
1870 ALLOC_CALLBACK();
1871 {
1872 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
1873 ffi_cif cif;
1874 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1875 PREP_CALLBACK(cif,f_f8i_simulator,(void*)&f_f8i);
1876 fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,i9);
1877 }
1878 FREE_CALLBACK();
1879 fprintf(out,"->%g\n",fr);
1880 fflush(out);
1881 #endif
1882
1883 #if (!defined(DGTEST)) || DGTEST == 34
1884 fr = f_f13i(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,i9);
1885 fprintf(out,"->%g\n",fr);
1886 fflush(out);
1887 fr = 0.0; clear_traces();
1888 ALLOC_CALLBACK();
1889 {
1890 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
1891 ffi_cif cif;
1892 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1893 PREP_CALLBACK(cif,f_f13i_simulator,(void*)&f_f13i);
1894 fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,i9);
1895 }
1896 FREE_CALLBACK();
1897 fprintf(out,"->%g\n",fr);
1898 fflush(out);
1899 #endif
1900
1901 #if (!defined(DGTEST)) || DGTEST == 35
1902 dr = d_di(d1,i9);
1903 fprintf(out,"->%g\n",dr);
1904 fflush(out);
1905 dr = 0.0; clear_traces();
1906 ALLOC_CALLBACK();
1907 {
1908 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_sint };
1909 ffi_cif cif;
1910 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1911 PREP_CALLBACK(cif,d_di_simulator,(void*)&d_di);
1912 dr = ((double (ABI_ATTR *) (double,int)) callback_code) (d1,i9);
1913 }
1914 FREE_CALLBACK();
1915 fprintf(out,"->%g\n",dr);
1916 fflush(out);
1917 #endif
1918
1919 #if (!defined(DGTEST)) || DGTEST == 36
1920 dr = d_d2i(d1,d2,i9);
1921 fprintf(out,"->%g\n",dr);
1922 fflush(out);
1923 dr = 0.0; clear_traces();
1924 ALLOC_CALLBACK();
1925 {
1926 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_sint };
1927 ffi_cif cif;
1928 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1929 PREP_CALLBACK(cif,d_d2i_simulator,(void*)&d_d2i);
1930 dr = ((double (ABI_ATTR *) (double,double,int)) callback_code) (d1,d2,i9);
1931 }
1932 FREE_CALLBACK();
1933 fprintf(out,"->%g\n",dr);
1934 fflush(out);
1935 #endif
1936
1937 #if (!defined(DGTEST)) || DGTEST == 37
1938 dr = d_d3i(d1,d2,d3,i9);
1939 fprintf(out,"->%g\n",dr);
1940 fflush(out);
1941 dr = 0.0; clear_traces();
1942 ALLOC_CALLBACK();
1943 {
1944 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
1945 ffi_cif cif;
1946 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1947 PREP_CALLBACK(cif,d_d3i_simulator,(void*)&d_d3i);
1948 dr = ((double (ABI_ATTR *) (double,double,double,int)) callback_code) (d1,d2,d3,i9);
1949 }
1950 FREE_CALLBACK();
1951 fprintf(out,"->%g\n",dr);
1952 fflush(out);
1953 #endif
1954
1955 #if (!defined(DGTEST)) || DGTEST == 38
1956 dr = d_d4i(d1,d2,d3,d4,i9);
1957 fprintf(out,"->%g\n",dr);
1958 fflush(out);
1959 dr = 0.0; clear_traces();
1960 ALLOC_CALLBACK();
1961 {
1962 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
1963 ffi_cif cif;
1964 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1965 PREP_CALLBACK(cif,d_d4i_simulator,(void*)&d_d4i);
1966 dr = ((double (ABI_ATTR *) (double,double,double,double,int)) callback_code) (d1,d2,d3,d4,i9);
1967 }
1968 FREE_CALLBACK();
1969 fprintf(out,"->%g\n",dr);
1970 fflush(out);
1971 #endif
1972
1973 #if (!defined(DGTEST)) || DGTEST == 39
1974 dr = d_d7i(d1,d2,d3,d4,d5,d6,d7,i9);
1975 fprintf(out,"->%g\n",dr);
1976 fflush(out);
1977 dr = 0.0; clear_traces();
1978 ALLOC_CALLBACK();
1979 {
1980 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
1981 ffi_cif cif;
1982 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1983 PREP_CALLBACK(cif,d_d7i_simulator,(void*)&d_d7i);
1984 dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,i9);
1985 }
1986 FREE_CALLBACK();
1987 fprintf(out,"->%g\n",dr);
1988 fflush(out);
1989 #endif
1990
1991 #if (!defined(DGTEST)) || DGTEST == 40
1992 dr = d_d8i(d1,d2,d3,d4,d5,d6,d7,d8,i9);
1993 fprintf(out,"->%g\n",dr);
1994 fflush(out);
1995 dr = 0.0; clear_traces();
1996 ALLOC_CALLBACK();
1997 {
1998 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
1999 ffi_cif cif;
2000 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2001 PREP_CALLBACK(cif,d_d8i_simulator,(void*)&d_d8i);
2002 dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,i9);
2003 }
2004 FREE_CALLBACK();
2005 fprintf(out,"->%g\n",dr);
2006 fflush(out);
2007 #endif
2008
2009 #if (!defined(DGTEST)) || DGTEST == 41
2010 dr = d_d12i(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,i9);
2011 fprintf(out,"->%g\n",dr);
2012 fflush(out);
2013 dr = 0.0; clear_traces();
2014 ALLOC_CALLBACK();
2015 {
2016 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
2017 ffi_cif cif;
2018 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2019 PREP_CALLBACK(cif,d_d12i_simulator,(void*)&d_d12i);
2020 dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,i9);
2021 }
2022 FREE_CALLBACK();
2023 fprintf(out,"->%g\n",dr);
2024 fflush(out);
2025 #endif
2026
2027 #if (!defined(DGTEST)) || DGTEST == 42
2028 dr = d_d13i(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,i9);
2029 fprintf(out,"->%g\n",dr);
2030 fflush(out);
2031 dr = 0.0; clear_traces();
2032 ALLOC_CALLBACK();
2033 {
2034 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
2035 ffi_cif cif;
2036 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2037 PREP_CALLBACK(cif,d_d13i_simulator,(void*)&d_d13i);
2038 dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,i9);
2039 }
2040 FREE_CALLBACK();
2041 fprintf(out,"->%g\n",dr);
2042 fflush(out);
2043 #endif
2044 }
2045
2046 /* small structure return tests */
2047 #if (!defined(DGTEST)) || DGTEST == 43
2048 {
2049 Size1 r = S1_v();
2050 fprintf(out,"->{%c}\n",r.x1);
2051 fflush(out);
2052 memset(&r,0,sizeof(r)); clear_traces();
2053 ALLOC_CALLBACK();
2054 {
2055 ffi_type* ffi_type_Size1_elements[] = { &ffi_type_char, NULL };
2056 ffi_type ffi_type_Size1;
2057 ffi_type_Size1.type = FFI_TYPE_STRUCT;
2058 ffi_type_Size1.size = sizeof(Size1);
2059 ffi_type_Size1.alignment = alignof_slot(Size1);
2060 ffi_type_Size1.elements = ffi_type_Size1_elements;
2061 ffi_cif cif;
2062 FFI_PREP_CIF_NOARGS(cif,ffi_type_Size1);
2063 PREP_CALLBACK(cif,S1_v_simulator,(void*)&S1_v);
2064 r = ((Size1 (ABI_ATTR *) (void)) callback_code) ();
2065 }
2066 FREE_CALLBACK();
2067 fprintf(out,"->{%c}\n",r.x1);
2068 fflush(out);
2069 }
2070 #endif
2071
2072 #if (!defined(DGTEST)) || DGTEST == 44
2073 {
2074 Size2 r = S2_v();
2075 fprintf(out,"->{%c%c}\n",r.x1,r.x2);
2076 fflush(out);
2077 memset(&r,0,sizeof(r)); clear_traces();
2078 ALLOC_CALLBACK();
2079 {
2080 ffi_type* ffi_type_Size2_elements[] = { &ffi_type_char, &ffi_type_char, NULL };
2081 ffi_type ffi_type_Size2;
2082 ffi_type_Size2.type = FFI_TYPE_STRUCT;
2083 ffi_type_Size2.size = sizeof(Size2);
2084 ffi_type_Size2.alignment = alignof_slot(Size2);
2085 ffi_type_Size2.elements = ffi_type_Size2_elements;
2086 ffi_cif cif;
2087 FFI_PREP_CIF_NOARGS(cif,ffi_type_Size2);
2088 PREP_CALLBACK(cif,S2_v_simulator,(void*)&S2_v);
2089 r = ((Size2 (ABI_ATTR *) (void)) callback_code) ();
2090 }
2091 FREE_CALLBACK();
2092 fprintf(out,"->{%c%c}\n",r.x1,r.x2);
2093 fflush(out);
2094 }
2095 #endif
2096
2097 #if (!defined(DGTEST)) || DGTEST == 45
2098 {
2099 Size3 r = S3_v();
2100 fprintf(out,"->{%c%c%c}\n",r.x1,r.x2,r.x3);
2101 fflush(out);
2102 memset(&r,0,sizeof(r)); clear_traces();
2103 ALLOC_CALLBACK();
2104 {
2105 ffi_type* ffi_type_Size3_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
2106 ffi_type ffi_type_Size3;
2107 ffi_type_Size3.type = FFI_TYPE_STRUCT;
2108 ffi_type_Size3.size = sizeof(Size3);
2109 ffi_type_Size3.alignment = alignof_slot(Size3);
2110 ffi_type_Size3.elements = ffi_type_Size3_elements;
2111 ffi_cif cif;
2112 FFI_PREP_CIF_NOARGS(cif,ffi_type_Size3);
2113 PREP_CALLBACK(cif,S3_v_simulator,(void*)&S3_v);
2114 r = ((Size3 (ABI_ATTR *) (void)) callback_code) ();
2115 }
2116 FREE_CALLBACK();
2117 fprintf(out,"->{%c%c%c}\n",r.x1,r.x2,r.x3);
2118 fflush(out);
2119 }
2120 #endif
2121
2122 #if (!defined(DGTEST)) || DGTEST == 46
2123 {
2124 Size4 r = S4_v();
2125 fprintf(out,"->{%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4);
2126 fflush(out);
2127 memset(&r,0,sizeof(r)); clear_traces();
2128 ALLOC_CALLBACK();
2129 {
2130 ffi_type* ffi_type_Size4_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
2131 ffi_type ffi_type_Size4;
2132 ffi_type_Size4.type = FFI_TYPE_STRUCT;
2133 ffi_type_Size4.size = sizeof(Size4);
2134 ffi_type_Size4.alignment = alignof_slot(Size4);
2135 ffi_type_Size4.elements = ffi_type_Size4_elements;
2136 ffi_cif cif;
2137 FFI_PREP_CIF_NOARGS(cif,ffi_type_Size4);
2138 PREP_CALLBACK(cif,S4_v_simulator,(void*)&S4_v);
2139 r = ((Size4 (ABI_ATTR *) (void)) callback_code) ();
2140 }
2141 FREE_CALLBACK();
2142 fprintf(out,"->{%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4);
2143 fflush(out);
2144 }
2145 #endif
2146
2147 #if (!defined(DGTEST)) || DGTEST == 47
2148 {
2149 Size7 r = S7_v();
2150 fprintf(out,"->{%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7);
2151 fflush(out);
2152 memset(&r,0,sizeof(r)); clear_traces();
2153 ALLOC_CALLBACK();
2154 {
2155 ffi_type* ffi_type_Size7_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
2156 ffi_type ffi_type_Size7;
2157 ffi_type_Size7.type = FFI_TYPE_STRUCT;
2158 ffi_type_Size7.size = sizeof(Size7);
2159 ffi_type_Size7.alignment = alignof_slot(Size7);
2160 ffi_type_Size7.elements = ffi_type_Size7_elements;
2161 ffi_cif cif;
2162 FFI_PREP_CIF_NOARGS(cif,ffi_type_Size7);
2163 PREP_CALLBACK(cif,S7_v_simulator,(void*)&S7_v);
2164 r = ((Size7 (ABI_ATTR *) (void)) callback_code) ();
2165 }
2166 FREE_CALLBACK();
2167 fprintf(out,"->{%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7);
2168 fflush(out);
2169 }
2170 #endif
2171
2172 #if (!defined(DGTEST)) || DGTEST == 48
2173 {
2174 Size8 r = S8_v();
2175 fprintf(out,"->{%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8);
2176 fflush(out);
2177 memset(&r,0,sizeof(r)); clear_traces();
2178 ALLOC_CALLBACK();
2179 {
2180 ffi_type* ffi_type_Size8_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
2181 ffi_type ffi_type_Size8;
2182 ffi_type_Size8.type = FFI_TYPE_STRUCT;
2183 ffi_type_Size8.size = sizeof(Size8);
2184 ffi_type_Size8.alignment = alignof_slot(Size8);
2185 ffi_type_Size8.elements = ffi_type_Size8_elements;
2186 ffi_cif cif;
2187 FFI_PREP_CIF_NOARGS(cif,ffi_type_Size8);
2188 PREP_CALLBACK(cif,S8_v_simulator,(void*)&S8_v);
2189 r = ((Size8 (ABI_ATTR *) (void)) callback_code) ();
2190 }
2191 FREE_CALLBACK();
2192 fprintf(out,"->{%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8);
2193 fflush(out);
2194 }
2195 #endif
2196
2197 #if (!defined(DGTEST)) || DGTEST == 49
2198 {
2199 Size12 r = S12_v();
2200 fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12);
2201 fflush(out);
2202 memset(&r,0,sizeof(r)); clear_traces();
2203 ALLOC_CALLBACK();
2204 {
2205 ffi_type* ffi_type_Size12_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
2206 ffi_type ffi_type_Size12;
2207 ffi_type_Size12.type = FFI_TYPE_STRUCT;
2208 ffi_type_Size12.size = sizeof(Size12);
2209 ffi_type_Size12.alignment = alignof_slot(Size12);
2210 ffi_type_Size12.elements = ffi_type_Size12_elements;
2211 ffi_cif cif;
2212 FFI_PREP_CIF_NOARGS(cif,ffi_type_Size12);
2213 PREP_CALLBACK(cif,S12_v_simulator,(void*)&S12_v);
2214 r = ((Size12 (ABI_ATTR *) (void)) callback_code) ();
2215 }
2216 FREE_CALLBACK();
2217 fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12);
2218 fflush(out);
2219 }
2220 #endif
2221
2222 #if (!defined(DGTEST)) || DGTEST == 50
2223 {
2224 Size15 r = S15_v();
2225 fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15);
2226 fflush(out);
2227 memset(&r,0,sizeof(r)); clear_traces();
2228 ALLOC_CALLBACK();
2229 {
2230 ffi_type* ffi_type_Size15_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
2231 ffi_type ffi_type_Size15;
2232 ffi_type_Size15.type = FFI_TYPE_STRUCT;
2233 ffi_type_Size15.size = sizeof(Size15);
2234 ffi_type_Size15.alignment = alignof_slot(Size15);
2235 ffi_type_Size15.elements = ffi_type_Size15_elements;
2236 ffi_cif cif;
2237 FFI_PREP_CIF_NOARGS(cif,ffi_type_Size15);
2238 PREP_CALLBACK(cif,S15_v_simulator,(void*)&S15_v);
2239 r = ((Size15 (ABI_ATTR *) (void)) callback_code) ();
2240 }
2241 FREE_CALLBACK();
2242 fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15);
2243 fflush(out);
2244 }
2245 #endif
2246
2247 #if (!defined(DGTEST)) || DGTEST == 51
2248 {
2249 Size16 r = S16_v();
2250 fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15,r.x16);
2251 fflush(out);
2252 memset(&r,0,sizeof(r)); clear_traces();
2253 ALLOC_CALLBACK();
2254 {
2255 ffi_type* ffi_type_Size16_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
2256 ffi_type ffi_type_Size16;
2257 ffi_type_Size16.type = FFI_TYPE_STRUCT;
2258 ffi_type_Size16.size = sizeof(Size16);
2259 ffi_type_Size16.alignment = alignof_slot(Size16);
2260 ffi_type_Size16.elements = ffi_type_Size16_elements;
2261 ffi_cif cif;
2262 FFI_PREP_CIF_NOARGS(cif,ffi_type_Size16);
2263 PREP_CALLBACK(cif,S16_v_simulator,(void*)&S16_v);
2264 r = ((Size16 (ABI_ATTR *) (void)) callback_code) ();
2265 }
2266 FREE_CALLBACK();
2267 fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15,r.x16);
2268 fflush(out);
2269 }
2270 #endif
2271
2272
2273 /* structure tests */
2274 { Int Ir;
2275 Char Cr;
2276 Float Fr;
2277 Double Dr;
2278 J Jr;
2279 #ifndef SKIP_EXTRA_STRUCTS
2280 T Tr;
2281 X Xr;
2282 #endif
2283
2284 #if (!defined(DGTEST)) || DGTEST == 52
2285 Ir = I_III(I1,I2,I3);
2286 fprintf(out,"->{%d}\n",Ir.x);
2287 fflush(out);
2288 Ir.x = 0; clear_traces();
2289 ALLOC_CALLBACK();
2290 {
2291 ffi_type* ffi_type_Int_elements[] = { &ffi_type_sint, NULL };
2292 ffi_type ffi_type_Int;
2293 ffi_type_Int.type = FFI_TYPE_STRUCT;
2294 ffi_type_Int.size = sizeof(Int);
2295 ffi_type_Int.alignment = alignof_slot(Int);
2296 ffi_type_Int.elements = ffi_type_Int_elements;
2297 ffi_type* argtypes[] = { &ffi_type_Int, &ffi_type_Int, &ffi_type_Int };
2298 ffi_cif cif;
2299 FFI_PREP_CIF(cif,argtypes,ffi_type_Int);
2300 PREP_CALLBACK(cif,I_III_simulator,(void*)&I_III);
2301 Ir = ((Int (ABI_ATTR *) (Int,Int,Int)) callback_code) (I1,I2,I3);
2302 }
2303 FREE_CALLBACK();
2304 fprintf(out,"->{%d}\n",Ir.x);
2305 fflush(out);
2306 #endif
2307
2308 #if (!defined(DGTEST)) || DGTEST == 53
2309 Cr = C_CdC(C1,d2,C3);
2310 fprintf(out,"->{'%c'}\n",Cr.x);
2311 fflush(out);
2312 Cr.x = '\0'; clear_traces();
2313 ALLOC_CALLBACK();
2314 {
2315 ffi_type* ffi_type_Char_elements[] = { &ffi_type_char, NULL };
2316 ffi_type ffi_type_Char;
2317 ffi_type_Char.type = FFI_TYPE_STRUCT;
2318 ffi_type_Char.size = sizeof(Char);
2319 ffi_type_Char.alignment = alignof_slot(Char);
2320 ffi_type_Char.elements = ffi_type_Char_elements;
2321 ffi_type* argtypes[] = { &ffi_type_Char, &ffi_type_double, &ffi_type_Char };
2322 ffi_cif cif;
2323 FFI_PREP_CIF(cif,argtypes,ffi_type_Char);
2324 PREP_CALLBACK(cif,C_CdC_simulator,(void*)&C_CdC);
2325 Cr = ((Char (ABI_ATTR *) (Char,double,Char)) callback_code) (C1,d2,C3);
2326 }
2327 FREE_CALLBACK();
2328 fprintf(out,"->{'%c'}\n",Cr.x);
2329 fflush(out);
2330 #endif
2331
2332 #if (!defined(DGTEST)) || DGTEST == 54
2333 Fr = F_Ffd(F1,f2,d3);
2334 fprintf(out,"->{%g}\n",Fr.x);
2335 fflush(out);
2336 Fr.x = 0.0; clear_traces();
2337 ALLOC_CALLBACK();
2338 {
2339 ffi_type* ffi_type_Float_elements[] = { &ffi_type_float, NULL };
2340 ffi_type ffi_type_Float;
2341 ffi_type_Float.type = FFI_TYPE_STRUCT;
2342 ffi_type_Float.size = sizeof(Float);
2343 ffi_type_Float.alignment = alignof_slot(Float);
2344 ffi_type_Float.elements = ffi_type_Float_elements;
2345 ffi_type* argtypes[] = { &ffi_type_Float, &ffi_type_float, &ffi_type_double };
2346 ffi_cif cif;
2347 FFI_PREP_CIF(cif,argtypes,ffi_type_Float);
2348 PREP_CALLBACK(cif,F_Ffd_simulator,(void*)&F_Ffd);
2349 Fr = ((Float (ABI_ATTR *) (Float,float,double)) callback_code) (F1,f2,d3);
2350 }
2351 FREE_CALLBACK();
2352 fprintf(out,"->{%g}\n",Fr.x);
2353 fflush(out);
2354 #endif
2355
2356 #if (!defined(DGTEST)) || DGTEST == 55
2357 Dr = D_fDd(f1,D2,d3);
2358 fprintf(out,"->{%g}\n",Dr.x);
2359 fflush(out);
2360 Dr.x = 0.0; clear_traces();
2361 ALLOC_CALLBACK();
2362 {
2363 ffi_type* ffi_type_Double_elements[] = { &ffi_type_double, NULL };
2364 ffi_type ffi_type_Double;
2365 ffi_type_Double.type = FFI_TYPE_STRUCT;
2366 ffi_type_Double.size = sizeof(Double);
2367 ffi_type_Double.alignment = alignof_slot(Double);
2368 ffi_type_Double.elements = ffi_type_Double_elements;
2369 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_Double, &ffi_type_double };
2370 ffi_cif cif;
2371 FFI_PREP_CIF(cif,argtypes,ffi_type_Double);
2372 PREP_CALLBACK(cif,D_fDd_simulator,(void*)&D_fDd);
2373 Dr = ((Double (ABI_ATTR *) (float,Double,double)) callback_code) (f1,D2,d3);
2374 }
2375 FREE_CALLBACK();
2376 fprintf(out,"->{%g}\n",Dr.x);
2377 fflush(out);
2378 #endif
2379
2380 #if (!defined(DGTEST)) || DGTEST == 56
2381 Dr = D_Dfd(D1,f2,d3);
2382 fprintf(out,"->{%g}\n",Dr.x);
2383 fflush(out);
2384 Dr.x = 0.0; clear_traces();
2385 ALLOC_CALLBACK();
2386 {
2387 ffi_type* ffi_type_Double_elements[] = { &ffi_type_double, NULL };
2388 ffi_type ffi_type_Double;
2389 ffi_type_Double.type = FFI_TYPE_STRUCT;
2390 ffi_type_Double.size = sizeof(Double);
2391 ffi_type_Double.alignment = alignof_slot(Double);
2392 ffi_type_Double.elements = ffi_type_Double_elements;
2393 ffi_type* argtypes[] = { &ffi_type_Double, &ffi_type_float, &ffi_type_double };
2394 ffi_cif cif;
2395 FFI_PREP_CIF(cif,argtypes,ffi_type_Double);
2396 PREP_CALLBACK(cif,D_Dfd_simulator,(void*)&D_Dfd);
2397 Dr = ((Double (ABI_ATTR *) (Double,float,double)) callback_code) (D1,f2,d3);
2398 }
2399 FREE_CALLBACK();
2400 fprintf(out,"->{%g}\n",Dr.x);
2401 fflush(out);
2402 #endif
2403
2404 #if (!defined(DGTEST)) || DGTEST == 57
2405 Jr = J_JiJ(J1,i2,J2);
2406 fprintf(out,"->{%ld,%ld}\n",Jr.l1,Jr.l2);
2407 fflush(out);
2408 Jr.l1 = Jr.l2 = 0; clear_traces();
2409 ALLOC_CALLBACK();
2410 {
2411 ffi_type* ffi_type_J_elements[] = { &ffi_type_slong, &ffi_type_slong, NULL };
2412 ffi_type ffi_type_J;
2413 ffi_type_J.type = FFI_TYPE_STRUCT;
2414 ffi_type_J.size = sizeof(J);
2415 ffi_type_J.alignment = alignof_slot(J);
2416 ffi_type_J.elements = ffi_type_J_elements;
2417 ffi_type* argtypes[] = { &ffi_type_J, &ffi_type_sint, &ffi_type_J };
2418 ffi_cif cif;
2419 FFI_PREP_CIF(cif,argtypes,ffi_type_J);
2420 PREP_CALLBACK(cif,J_JiJ_simulator,(void*)&J_JiJ);
2421 Jr = ((J (ABI_ATTR *) (J,int,J)) callback_code) (J1,i2,J2);
2422 }
2423 FREE_CALLBACK();
2424 fprintf(out,"->{%ld,%ld}\n",Jr.l1,Jr.l2);
2425 fflush(out);
2426 #endif
2427
2428 #ifndef SKIP_EXTRA_STRUCTS
2429 #if (!defined(DGTEST)) || DGTEST == 58
2430 Tr = T_TcT(T1,' ',T2);
2431 fprintf(out,"->{\"%c%c%c\"}\n",Tr.c[0],Tr.c[1],Tr.c[2]);
2432 fflush(out);
2433 Tr.c[0] = Tr.c[1] = Tr.c[2] = 0; clear_traces();
2434 ALLOC_CALLBACK();
2435 {
2436 ffi_type* ffi_type_T_elements[] = { ??, NULL };
2437 ffi_type ffi_type_T;
2438 ffi_type_T.type = FFI_TYPE_STRUCT;
2439 ffi_type_T.size = sizeof(T);
2440 ffi_type_T.alignment = alignof_slot(T);
2441 ffi_type_T.elements = ffi_type_T_elements;
2442 ffi_type* argtypes[] = { &ffi_type_T, &ffi_type_char, &ffi_type_T };
2443 ffi_cif cif;
2444 FFI_PREP_CIF(cif,argtypes,ffi_type_T);
2445 PREP_CALLBACK(cif,T_TcT_simulator,(void*)&T_TcT);
2446 Tr = ((T (ABI_ATTR *) (T,char,T)) callback_code) (T1,' ',T2);
2447 }
2448 FREE_CALLBACK();
2449 fprintf(out,"->{\"%c%c%c\"}\n",Tr.c[0],Tr.c[1],Tr.c[2]);
2450 fflush(out);
2451 #endif
2452
2453 #ifndef SKIP_X
2454 #if (!defined(DGTEST)) || DGTEST == 59
2455 Xr = X_BcdB(B1,c2,d3,B2);
2456 fprintf(out,"->{\"%s\",'%c'}\n",Xr.c,Xr.c1);
2457 fflush(out);
2458 Xr.c[0]=Xr.c1='\0'; clear_traces();
2459 ALLOC_CALLBACK();
2460 {
2461 ffi_type* ffi_type_X_elements[] = { ??, NULL };
2462 ffi_type ffi_type_X;
2463 ffi_type_X.type = FFI_TYPE_STRUCT;
2464 ffi_type_X.size = sizeof(X);
2465 ffi_type_X.alignment = alignof_slot(X);
2466 ffi_type_X.elements = ffi_type_X_elements;
2467 ffi_type* argtypes[] = { &ffi_type_X, &ffi_type_char, &ffi_type_double, &ffi_type_X };
2468 ffi_cif cif;
2469 FFI_PREP_CIF(cif,argtypes,ffi_type_X);
2470 PREP_CALLBACK(cif,X_BcdB_simulator,(void*)&X_BcdB);
2471 Xr = ((X (ABI_ATTR *) (B,char,double,B)) callback_code) (B1,c2,d3,B2);
2472 }
2473 FREE_CALLBACK();
2474 fprintf(out,"->{\"%s\",'%c'}\n",Xr.c,Xr.c1);
2475 fflush(out);
2476 #endif
2477 #endif
2478 #endif
2479 }
2480
2481
2482 /* gpargs boundary tests */
2483 {
2484 ffi_type* ffi_type_K_elements[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, NULL };
2485 ffi_type ffi_type_K;
2486 ffi_type* ffi_type_L_elements[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, NULL };
2487 ffi_type ffi_type_L;
2488 long lr;
2489 long long llr;
2490 float fr;
2491 double dr;
2492
2493 ffi_type_K.type = FFI_TYPE_STRUCT;
2494 ffi_type_K.size = sizeof(K);
2495 ffi_type_K.alignment = alignof_slot(K);
2496 ffi_type_K.elements = ffi_type_K_elements;
2497
2498 ffi_type_L.type = FFI_TYPE_STRUCT;
2499 ffi_type_L.size = sizeof(L);
2500 ffi_type_L.alignment = alignof_slot(L);
2501 ffi_type_L.elements = ffi_type_L_elements;
2502
2503 #if (!defined(DGTEST)) || DGTEST == 60
2504 lr = l_l0K(K1,l9);
2505 fprintf(out,"->%ld\n",lr);
2506 fflush(out);
2507 lr = 0; clear_traces();
2508 ALLOC_CALLBACK();
2509 {
2510 ffi_type* argtypes[] = { &ffi_type_K, &ffi_type_slong };
2511 ffi_cif cif;
2512 FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
2513 PREP_CALLBACK(cif,l_l0K_simulator,(void*)l_l0K);
2514 lr = ((long (ABI_ATTR *) (K,long)) callback_code) (K1,l9);
2515 }
2516 FREE_CALLBACK();
2517 fprintf(out,"->%ld\n",lr);
2518 fflush(out);
2519 #endif
2520
2521 #if (!defined(DGTEST)) || DGTEST == 61
2522 lr = l_l1K(l1,K1,l9);
2523 fprintf(out,"->%ld\n",lr);
2524 fflush(out);
2525 lr = 0; clear_traces();
2526 ALLOC_CALLBACK();
2527 {
2528 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
2529 ffi_cif cif;
2530 FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
2531 PREP_CALLBACK(cif,l_l1K_simulator,(void*)l_l1K);
2532 lr = ((long (ABI_ATTR *) (long,K,long)) callback_code) (l1,K1,l9);
2533 }
2534 FREE_CALLBACK();
2535 fprintf(out,"->%ld\n",lr);
2536 fflush(out);
2537 #endif
2538
2539 #if (!defined(DGTEST)) || DGTEST == 62
2540 lr = l_l2K(l1,l2,K1,l9);
2541 fprintf(out,"->%ld\n",lr);
2542 fflush(out);
2543 lr = 0; clear_traces();
2544 ALLOC_CALLBACK();
2545 {
2546 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
2547 ffi_cif cif;
2548 FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
2549 PREP_CALLBACK(cif,l_l2K_simulator,(void*)l_l2K);
2550 lr = ((long (ABI_ATTR *) (long,long,K,long)) callback_code) (l1,l2,K1,l9);
2551 }
2552 FREE_CALLBACK();
2553 fprintf(out,"->%ld\n",lr);
2554 fflush(out);
2555 #endif
2556
2557 #if (!defined(DGTEST)) || DGTEST == 63
2558 lr = l_l3K(l1,l2,l3,K1,l9);
2559 fprintf(out,"->%ld\n",lr);
2560 fflush(out);
2561 lr = 0; clear_traces();
2562 ALLOC_CALLBACK();
2563 {
2564 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
2565 ffi_cif cif;
2566 FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
2567 PREP_CALLBACK(cif,l_l3K_simulator,(void*)l_l3K);
2568 lr = ((long (ABI_ATTR *) (long,long,long,K,long)) callback_code) (l1,l2,l3,K1,l9);
2569 }
2570 FREE_CALLBACK();
2571 fprintf(out,"->%ld\n",lr);
2572 fflush(out);
2573 #endif
2574
2575 #if (!defined(DGTEST)) || DGTEST == 64
2576 lr = l_l4K(l1,l2,l3,l4,K1,l9);
2577 fprintf(out,"->%ld\n",lr);
2578 fflush(out);
2579 lr = 0; clear_traces();
2580 ALLOC_CALLBACK();
2581 {
2582 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
2583 ffi_cif cif;
2584 FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
2585 PREP_CALLBACK(cif,l_l4K_simulator,(void*)l_l4K);
2586 lr = ((long (ABI_ATTR *) (long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,K1,l9);
2587 }
2588 FREE_CALLBACK();
2589 fprintf(out,"->%ld\n",lr);
2590 fflush(out);
2591 #endif
2592
2593 #if (!defined(DGTEST)) || DGTEST == 65
2594 lr = l_l5K(l1,l2,l3,l4,l5,K1,l9);
2595 fprintf(out,"->%ld\n",lr);
2596 fflush(out);
2597 lr = 0; clear_traces();
2598 ALLOC_CALLBACK();
2599 {
2600 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
2601 ffi_cif cif;
2602 FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
2603 PREP_CALLBACK(cif,l_l5K_simulator,(void*)l_l5K);
2604 lr = ((long (ABI_ATTR *) (long,long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,l5,K1,l9);
2605 }
2606 FREE_CALLBACK();
2607 fprintf(out,"->%ld\n",lr);
2608 fflush(out);
2609 #endif
2610
2611 #if (!defined(DGTEST)) || DGTEST == 66
2612 lr = l_l6K(l1,l2,l3,l4,l5,l6,K1,l9);
2613 fprintf(out,"->%ld\n",lr);
2614 fflush(out);
2615 lr = 0; clear_traces();
2616 ALLOC_CALLBACK();
2617 {
2618 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
2619 ffi_cif cif;
2620 FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
2621 PREP_CALLBACK(cif,l_l6K_simulator,(void*)l_l6K);
2622 lr = ((long (ABI_ATTR *) (long,long,long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,l5,l6,K1,l9);
2623 }
2624 FREE_CALLBACK();
2625 fprintf(out,"->%ld\n",lr);
2626 fflush(out);
2627 #endif
2628
2629 #if (!defined(DGTEST)) || DGTEST == 67
2630 fr = f_f17l3L(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,l6,l7,l8,L1);
2631 fprintf(out,"->%g\n",fr);
2632 fflush(out);
2633 fr = 0.0; clear_traces();
2634 ALLOC_CALLBACK();
2635 {
2636 ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_L };
2637 ffi_cif cif;
2638 FFI_PREP_CIF(cif,argtypes,ffi_type_float);
2639 PREP_CALLBACK(cif,f_f17l3L_simulator,(void*)&f_f17l3L);
2640 fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,long,long,long,L)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,l6,l7,l8,L1);
2641 }
2642 FREE_CALLBACK();
2643 fprintf(out,"->%g\n",fr);
2644 fflush(out);
2645 #endif
2646
2647 #if (!defined(DGTEST)) || DGTEST == 68
2648 dr = d_d17l3L(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,l6,l7,l8,L1);
2649 fprintf(out,"->%g\n",dr);
2650 fflush(out);
2651 dr = 0.0; clear_traces();
2652 ALLOC_CALLBACK();
2653 {
2654 ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_L };
2655 ffi_cif cif;
2656 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2657 PREP_CALLBACK(cif,d_d17l3L_simulator,(void*)&d_d17l3L);
2658 dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,long,long,long,L)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,l6,l7,l8,L1);
2659 }
2660 FREE_CALLBACK();
2661 fprintf(out,"->%g\n",dr);
2662 fflush(out);
2663 #endif
2664
2665 #if (!defined(DGTEST)) || DGTEST == 69
2666 llr = ll_l2ll(l1,l2,ll1,l9);
2667 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2668 fflush(out);
2669 llr = 0; clear_traces();
2670 ALLOC_CALLBACK();
2671 {
2672 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
2673 ffi_cif cif;
2674 FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
2675 PREP_CALLBACK(cif,ll_l2ll_simulator,(void*)ll_l2ll);
2676 llr = ((long long (ABI_ATTR *) (long,long,long long,long)) callback_code) (l1,l2,ll1,l9);
2677 }
2678 FREE_CALLBACK();
2679 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2680 fflush(out);
2681 #endif
2682
2683 #if (!defined(DGTEST)) || DGTEST == 70
2684 llr = ll_l3ll(l1,l2,l3,ll1,l9);
2685 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2686 fflush(out);
2687 llr = 0; clear_traces();
2688 ALLOC_CALLBACK();
2689 {
2690 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
2691 ffi_cif cif;
2692 FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
2693 PREP_CALLBACK(cif,ll_l3ll_simulator,(void*)ll_l3ll);
2694 llr = ((long long (ABI_ATTR *) (long,long,long,long long,long)) callback_code) (l1,l2,l3,ll1,l9);
2695 }
2696 FREE_CALLBACK();
2697 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2698 fflush(out);
2699 #endif
2700
2701 #if (!defined(DGTEST)) || DGTEST == 71
2702 llr = ll_l4ll(l1,l2,l3,l4,ll1,l9);
2703 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2704 fflush(out);
2705 llr = 0; clear_traces();
2706 ALLOC_CALLBACK();
2707 {
2708 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
2709 ffi_cif cif;
2710 FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
2711 PREP_CALLBACK(cif,ll_l4ll_simulator,(void*)ll_l4ll);
2712 llr = ((long long (ABI_ATTR *) (long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,ll1,l9);
2713 }
2714 FREE_CALLBACK();
2715 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2716 fflush(out);
2717 #endif
2718
2719 #if (!defined(DGTEST)) || DGTEST == 72
2720 llr = ll_l5ll(l1,l2,l3,l4,l5,ll1,l9);
2721 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2722 fflush(out);
2723 llr = 0; clear_traces();
2724 ALLOC_CALLBACK();
2725 {
2726 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
2727 ffi_cif cif;
2728 FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
2729 PREP_CALLBACK(cif,ll_l5ll_simulator,(void*)ll_l5ll);
2730 llr = ((long long (ABI_ATTR *) (long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,ll1,l9);
2731 }
2732 FREE_CALLBACK();
2733 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2734 fflush(out);
2735 #endif
2736
2737 #if (!defined(DGTEST)) || DGTEST == 73
2738 llr = ll_l6ll(l1,l2,l3,l4,l5,l6,ll1,l9);
2739 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2740 fflush(out);
2741 llr = 0; clear_traces();
2742 ALLOC_CALLBACK();
2743 {
2744 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
2745 ffi_cif cif;
2746 FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
2747 PREP_CALLBACK(cif,ll_l6ll_simulator,(void*)ll_l6ll);
2748 llr = ((long long (ABI_ATTR *) (long,long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,l6,ll1,l9);
2749 }
2750 FREE_CALLBACK();
2751 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2752 fflush(out);
2753 #endif
2754
2755 #if (!defined(DGTEST)) || DGTEST == 74
2756 llr = ll_l7ll(l1,l2,l3,l4,l5,l6,l7,ll1,l9);
2757 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2758 fflush(out);
2759 llr = 0; clear_traces();
2760 ALLOC_CALLBACK();
2761 {
2762 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
2763 ffi_cif cif;
2764 FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
2765 PREP_CALLBACK(cif,ll_l7ll_simulator,(void*)ll_l7ll);
2766 llr = ((long long (ABI_ATTR *) (long,long,long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,l6,l7,ll1,l9);
2767 }
2768 FREE_CALLBACK();
2769 fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
2770 fflush(out);
2771 #endif
2772
2773 #if (!defined(DGTEST)) || DGTEST == 75
2774 dr = d_l2d(l1,l2,ll1,l9);
2775 fprintf(out,"->%g\n",dr);
2776 fflush(out);
2777 dr = 0.0; clear_traces();
2778 ALLOC_CALLBACK();
2779 {
2780 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
2781 ffi_cif cif;
2782 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2783 PREP_CALLBACK(cif,d_l2d_simulator,(void*)d_l2d);
2784 dr = ((double (ABI_ATTR *) (long,long,double,long)) callback_code) (l1,l2,ll1,l9);
2785 }
2786 FREE_CALLBACK();
2787 fprintf(out,"->%g\n",dr);
2788 fflush(out);
2789 #endif
2790
2791 #if (!defined(DGTEST)) || DGTEST == 76
2792 dr = d_l3d(l1,l2,l3,ll1,l9);
2793 fprintf(out,"->%g\n",dr);
2794 fflush(out);
2795 dr = 0.0; clear_traces();
2796 ALLOC_CALLBACK();
2797 {
2798 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
2799 ffi_cif cif;
2800 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2801 PREP_CALLBACK(cif,d_l3d_simulator,(void*)d_l3d);
2802 dr = ((double (ABI_ATTR *) (long,long,long,double,long)) callback_code) (l1,l2,l3,ll1,l9);
2803 }
2804 FREE_CALLBACK();
2805 fprintf(out,"->%g\n",dr);
2806 fflush(out);
2807 #endif
2808
2809 #if (!defined(DGTEST)) || DGTEST == 77
2810 dr = d_l4d(l1,l2,l3,l4,ll1,l9);
2811 fprintf(out,"->%g\n",dr);
2812 fflush(out);
2813 dr = 0.0; clear_traces();
2814 ALLOC_CALLBACK();
2815 {
2816 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
2817 ffi_cif cif;
2818 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2819 PREP_CALLBACK(cif,d_l4d_simulator,(void*)d_l4d);
2820 dr = ((double (ABI_ATTR *) (long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,ll1,l9);
2821 }
2822 FREE_CALLBACK();
2823 fprintf(out,"->%g\n",dr);
2824 fflush(out);
2825 #endif
2826
2827 #if (!defined(DGTEST)) || DGTEST == 78
2828 dr = d_l5d(l1,l2,l3,l4,l5,ll1,l9);
2829 fprintf(out,"->%g\n",dr);
2830 fflush(out);
2831 dr = 0.0; clear_traces();
2832 ALLOC_CALLBACK();
2833 {
2834 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
2835 ffi_cif cif;
2836 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2837 PREP_CALLBACK(cif,d_l5d_simulator,(void*)d_l5d);
2838 dr = ((double (ABI_ATTR *) (long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,ll1,l9);
2839 }
2840 FREE_CALLBACK();
2841 fprintf(out,"->%g\n",dr);
2842 fflush(out);
2843 #endif
2844
2845 #if (!defined(DGTEST)) || DGTEST == 79
2846 dr = d_l6d(l1,l2,l3,l4,l5,l6,ll1,l9);
2847 fprintf(out,"->%g\n",dr);
2848 fflush(out);
2849 dr = 0.0; clear_traces();
2850 ALLOC_CALLBACK();
2851 {
2852 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
2853 ffi_cif cif;
2854 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2855 PREP_CALLBACK(cif,d_l6d_simulator,(void*)d_l6d);
2856 dr = ((double (ABI_ATTR *) (long,long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,l6,ll1,l9);
2857 }
2858 FREE_CALLBACK();
2859 fprintf(out,"->%g\n",dr);
2860 fflush(out);
2861 #endif
2862
2863 #if (!defined(DGTEST)) || DGTEST == 80
2864 dr = d_l7d(l1,l2,l3,l4,l5,l6,l7,ll1,l9);
2865 fprintf(out,"->%g\n",dr);
2866 fflush(out);
2867 dr = 0.0; clear_traces();
2868 ALLOC_CALLBACK();
2869 {
2870 ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
2871 ffi_cif cif;
2872 FFI_PREP_CIF(cif,argtypes,ffi_type_double);
2873 PREP_CALLBACK(cif,d_l7d_simulator,(void*)d_l7d);
2874 dr = ((double (ABI_ATTR *) (long,long,long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,l6,l7,ll1,l9);
2875 }
2876 FREE_CALLBACK();
2877 fprintf(out,"->%g\n",dr);
2878 fflush(out);
2879 #endif
2880
2881 }
2882
2883 exit(0);
2884 }
2885
2886