Use conditional internal functions in if-conversion
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / darwin64-abi.c
blobe185cdf0e24f60d032791eef5821a86d8c5a8a00
1 /* Darwin 64-bit ABI testing */
2 /* { dg-do run { target { powerpc*-*-darwin* && lp64 } } } */
3 /* { dg-options "-std=c99 -maltivec" } */
5 /* Set this if 8-byte structs are being passed as integers. */
6 /* #define STRUCT8INT */
8 #include <stdarg.h>
9 #include <stdio.h>
10 #include <complex.h>
11 #include <altivec.h>
13 extern void abort (void);
15 struct s3c { char ch[3]; };
16 struct ssc { short sh; char ch; };
17 struct sif { int i; float f; };
18 struct sfi { float f; int i; };
19 struct sfii { float f; int i; int j; };
20 struct sfil { float f; int i; long l; };
21 struct sfif { float f; int i; float g; };
22 struct sfill { float f; int i; long l, m; };
23 struct sfl { float f; long l; };
24 struct sfldl { float f; long l1; double d; long l2; };
25 struct sfpp { float f; char *p1; char *p2; };
28 struct sff { float f1, f2; };
29 struct sfff { float f1, f2, f3; };
30 struct sffff { float f1, f2, f3, f4; };
32 struct sfD { float f; long double D; };
34 struct sidi { int i1; double d; int i2; };
36 struct sdd { double d1, d2; };
37 struct sddd { double d1, d2, d3; };
38 struct sdddd { double d1, d2, d3, d4; };
39 struct s3d { double d[3]; };
41 struct vr { union { int ielts[4]; float felts[4]; } elts; };
43 typedef struct
45 unsigned long gprs[32];
46 double fprs[32];
47 struct vr vrs[32];
48 unsigned char stack[1000];
49 } reg_parms_t;
51 reg_parms_t gparms;
53 #define TESTFN(RET,NAME,PARAMS) \
54 RET NAME PARAMS; \
55 RET dummy_ ## NAME PARAMS \
56 { \
57 __asm__("b end_" #NAME "\n_" # NAME ":\n\t" SAVE_STATE "b _dummy_" # NAME "\n\tend_" #NAME ":\n\n" ); \
60 #define SAVE_STATE \
61 SAVE_GPR(0) \
62 SAVE_GPR(1) \
63 SAVE_GPR(3) \
64 SAVE_GPR(4) \
65 SAVE_GPR(5) \
66 SAVE_GPR(6) \
67 SAVE_GPR(7) \
68 SAVE_GPR(8) \
69 SAVE_GPR(9) \
70 SAVE_GPR(10) \
71 SAVE_FPR(0) \
72 SAVE_FPR(1) \
73 SAVE_FPR(2) \
74 SAVE_FPR(3) \
75 SAVE_FPR(4) \
76 SAVE_FPR(5) \
77 SAVE_FPR(6) \
78 SAVE_FPR(7) \
79 SAVE_FPR(8) \
80 SAVE_FPR(9) \
81 SAVE_FPR(10) \
82 SAVE_FPR(12) \
83 SAVE_FPR(13) \
84 SAVE_VR(0) \
85 SAVE_VR(1) \
86 SAVE_VR(2) \
87 SAVE_VR(3) \
88 SAVE_VR(4) \
89 SAVE_STACK(112) \
90 SAVE_STACK(120) \
91 SAVE_STACK(128) \
92 SAVE_STACK(136) \
93 SAVE_STACK(144) \
96 #ifdef __LP64__
97 #define SAVE_GPR(N) "std r" #N "," #N "*8(r25)\n\t"
98 #define SAVE_FPR(N) "stfd f" #N "," #N "*8+256(r25)\n\t"
99 #define SAVE_VR(N) "li r26," #N "*16+512\n\tstvx v" #N ",r25,r26\n\t"
100 #define SAVE_STACK(N) "ld r26," #N "(r1)\n\tstd r26," #N "+1024(r25)\n\t"
101 #else
102 #define SAVE_GPR(N) "stw r" #N "," #N "*4(r25)\n\t"
103 #define SAVE_FPR(N) "stfd f" #N "," #N "*8+128(r25)\n\t"
104 #define SAVE_VR(N)
105 #define SAVE_STACK(N)
106 #endif
108 TESTFN(void, fffi, (float x, float y, int z))
110 #define clearall \
111 __asm__ volatile ( \
112 "\n\t" \
113 "li r3,0x333\n\t" \
114 "li r4,0x444 \n\t" \
115 "li r5,0x555\n\t" \
116 "li r6,0x666\n\t" \
117 "li r7,0x777\n\t" \
118 "li r8,0x888\n\t" \
119 "li r9,0x999\n\t" \
120 "li r10,0xaaa\n\t" \
121 "fsub f0,f0,f0\n\t" \
122 "fsub f1,f1,f1\n\t" \
123 "fsub f2,f2,f2\n\t" \
124 "fsub f3,f3,f3\n\t" \
125 "fsub f4,f4,f4\n\t" \
126 "fsub f5,f5,f5\n\t" \
127 "fsub f6,f6,f6\n\t" \
128 "fsub f7,f7,f7\n\t" \
129 "vsubuwm v0,v0,v0\n\t" \
130 "vsubuwm v1,v1,v1\n\t" \
131 "vsubuwm v2,v2,v2\n\t" \
132 "vsubuwm v3,v3,v3\n\t" \
133 "vsubuwm v4,v4,v4\n\t" \
134 : : : "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \
135 "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
136 "v0", "v1", "v2", "v3", "v4" );
138 TESTFN(void, fii, (int a, int b))
139 TESTFN(void, fid, (int i, double d))
140 TESTFN(void, fc, (complex float z))
141 TESTFN(void, fffff, (float f1, float f2, float f3, float f4))
142 TESTFN(void, fdddd, (double d1, double d2, double d3, double d4))
143 TESTFN(void, f_s3c_ssc, (struct s3c s1, struct ssc s2))
144 TESTFN(void, f_sff, (struct sff s))
145 TESTFN(void, f_sfff, (struct sfff s))
146 TESTFN(void, f_sffff, (struct sffff s))
147 TESTFN(void, f_sdd, (struct sdd s))
148 TESTFN(void, f_sddd, (struct sddd s))
149 TESTFN(void, f_sdddd, (struct sdddd s))
150 TESTFN(void, f_s3d, (struct s3d s))
151 TESTFN(void, f_sif, (int i, struct sif s))
152 TESTFN(void, fi_sif, (int i, struct sif s))
153 TESTFN(void, fi_sif_i, (int i, struct sif s, int j))
154 TESTFN(void, f_sfi, (int i, struct sfi s))
155 TESTFN(void, fi_sfi, (int i, struct sfi s))
156 TESTFN(void, fi_sfi_if, (int i, struct sfi s, int j, float f))
157 TESTFN(void, fi_sfill, (int i, struct sfill s))
158 TESTFN(void, fi_sfill_i, (int i, struct sfill s, int j))
159 TESTFN(void, f_sfl, (struct sfl s))
160 TESTFN(void, f_sfl_sfl_sfl_sfl_sfl, (struct sfl s1, struct sfl s2, struct sfl s3, struct sfl s4, struct sfl s5))
161 TESTFN(void, fi_sff, (int i, struct sff s))
162 TESTFN(void, f_sfpp_p, (struct sfpp s, char *p))
163 TESTFN(void, f_sfldl, (struct sfldl s))
164 TESTFN(void, fi_sff_i, (int i, struct sff s, int j))
165 TESTFN(void, f_sfD_sfD_sfD_sfD_sfD, (struct sfD s1, struct sfD s2, struct sfD s3, struct sfD s4, struct sfD s5))
166 TESTFN(void, fi_sidi, (int i, struct sidi s))
167 TESTFN(void, fifvf_sfi_dots, (int i, float f, vector float vf, struct sfi s, ...))
168 TESTFN(void, fifvf_sfii_dots, (int i, float f, vector float vf, struct sfii s, ...))
170 int numerrs;
172 #ifndef SKIP
173 static __attribute__ ((noinline)) void
174 check_gpr (int line, int reg, long expected)
176 if (gparms.gprs[reg] != expected)
178 printf("%d: r%d is 0x%lx, expected 0x%lx\n",
179 line, reg, gparms.gprs[reg], expected);
180 ++numerrs;
184 static __attribute__ ((noinline)) void
185 check_gpr_double (int line, int reg, double expected)
187 double tmp = *((double *) &(gparms.gprs[reg]));
188 if (tmp != expected)
190 printf("%d: r%d is %f (0x%llx), expected %f (0x%llx)\n",
191 line, reg,
192 tmp, *((long long *) &tmp),
193 expected, *((long long *) &expected));
194 ++numerrs;
198 static __attribute__ ((noinline)) void
199 check_gpr_float_pair (int line, int reg, float exp1, float exp2)
201 float tmp1 = *((float *) &(gparms.gprs[reg]));
202 float tmp2 = *(((float *) &(gparms.gprs[reg])) + 1);
204 if (tmp1 != exp1 || tmp2 != exp2)
206 printf("%d: r%d is %f / %f (0x%llx), expected %f (0x%x) / %f (0x%x)\n",
207 line, reg,
208 tmp1, tmp2, *((long long *) &(gparms.gprs[reg])),
209 exp1, *((int *) &exp1),
210 exp2, *((int *) &exp2));
211 ++numerrs;
215 static __attribute__ ((noinline)) void
216 check_fpr (int line, int reg, double expected)
218 if (gparms.fprs[reg] != expected)
220 printf("%d: f%d is %f (0x%llx), expected %f (0x%llx)\n",
221 line, reg,
222 gparms.fprs[reg], *((long long *) &(gparms.fprs[reg])),
223 expected, *((long long *) &expected));
224 ++numerrs;
228 static __attribute__ ((noinline)) void
229 check_vr_int (int reg, int n1, int n2, int n3, int n4)
231 if (gparms.vrs[reg].elts.ielts[0] != n1
232 || gparms.vrs[reg].elts.ielts[1] != n2
233 || gparms.vrs[reg].elts.ielts[2] != n3
234 || gparms.vrs[reg].elts.ielts[3] != n4)
236 printf("v%d is (%d,%d,%d,%d) (0x%x,0x%x,0x%x,0x%x),\n"
237 " expected (%d,%d,%d,%d) (0x%x,0x%x,0x%x,0x%x)\n",
238 reg,
239 gparms.vrs[reg].elts.ielts[0],
240 gparms.vrs[reg].elts.ielts[1],
241 gparms.vrs[reg].elts.ielts[2],
242 gparms.vrs[reg].elts.ielts[3],
243 gparms.vrs[reg].elts.ielts[0],
244 gparms.vrs[reg].elts.ielts[1],
245 gparms.vrs[reg].elts.ielts[2],
246 gparms.vrs[reg].elts.ielts[3],
247 n1, n2, n3, n4,
248 n1, n2, n3, n4
250 ++numerrs;
254 static __attribute__ ((noinline)) void
255 check_vr_float (int reg, float f1, float f2, float f3, float f4)
257 if (gparms.vrs[reg].elts.felts[0] != f1
258 || gparms.vrs[reg].elts.felts[1] != f2
259 || gparms.vrs[reg].elts.felts[2] != f3
260 || gparms.vrs[reg].elts.felts[3] != f4)
262 printf("v%d is (%f,%f,%f,%f) (0x%x,0x%x,0x%x,0x%x),\n"
263 " expected (%f,%f,%f,%f) (0x%x,0x%x,0x%x,0x%x)\n",
264 reg,
265 gparms.vrs[reg].elts.felts[0],
266 gparms.vrs[reg].elts.felts[1],
267 gparms.vrs[reg].elts.felts[2],
268 gparms.vrs[reg].elts.felts[3],
269 gparms.vrs[reg].elts.ielts[0],
270 gparms.vrs[reg].elts.ielts[1],
271 gparms.vrs[reg].elts.ielts[2],
272 gparms.vrs[reg].elts.ielts[3],
273 f1, f2, f3, f4,
274 *((int *) &f1), *((int *) &f2), *((int *) &f3), *((int *) &f4)
276 ++numerrs;
279 #endif
281 int main (void)
283 complex float cpx = 4.45f + I * 4.92f;
284 struct s3c s3c_loc;
285 struct ssc ssc_loc;
286 struct sfi sfi_loc;
287 struct sfi sfi_loc2 = { 6.3f, 0x1108 };
288 struct sfii sfii_loc;
289 struct sfii sfii_loc2 = { 6.9f, 0x1110, 0x6372 };
290 vector float vf_loc = (vector float) { 7.1f, 7.2f, 7.3f, 7.4f };
291 vector int vi_loc = (vector int) { 0xabc, 0xdef, 0xfed, 0xcba };
293 __asm__ ("mr r25,%0" : : "b" (&gparms) );
295 clearall;
296 fii(1, 2);
297 check_gpr (__LINE__, 3, 1);
298 check_gpr (__LINE__, 4, 2);
300 clearall;
301 fid(45, 4.5);
302 check_gpr (__LINE__, 3, 45);
303 check_fpr (__LINE__, 1, 4.5);
305 clearall;
306 fffi(1.2f, 3.4f, 456);
307 check_fpr(__LINE__, 1, 1.2f);
309 clearall;
310 fc(cpx);
311 /* Two floats are packed into r3 */
312 check_gpr_float_pair (__LINE__, 3, 4.45f, 4.92f);
314 clearall;
315 fffff (4.1f, 4.2f, 4.3f, 4.4f);
316 check_fpr (__LINE__, 1, 4.1f);
317 check_fpr (__LINE__, 4, 4.4f);
319 clearall;
320 fdddd (4.1, 4.2, 4.3, 4.4);
321 check_fpr (__LINE__, 1, 4.1);
322 check_fpr (__LINE__, 4, 4.4);
325 struct sff sff_loc = { 2.1f, 2.2f };
326 clearall;
327 f_sff(sff_loc);
328 #ifdef STRUCT8INT
329 check_gpr_float_pair (__LINE__, 3, 2.1f, 2.2f);
330 #else
331 check_fpr(__LINE__, 1, 2.1f);
332 check_fpr(__LINE__, 2, 2.2f);
333 #endif
334 clearall;
335 fi_sff_i(65, sff_loc, 66);
336 check_gpr(__LINE__, 3, 65);
337 #ifdef STRUCT8INT
338 check_gpr_float_pair (__LINE__, 4, 2.1f, 2.2f);
339 #else
340 check_fpr(__LINE__, 1, 2.1f);
341 check_fpr(__LINE__, 2, 2.2f);
342 #endif
343 check_gpr(__LINE__, 5, 66);
347 struct sfff sfff_loc = { 3.1f, 3.2f, 3.3f };
348 clearall;
349 f_sfff(sfff_loc);
350 check_fpr(__LINE__, 1, 3.1f);
351 check_fpr(__LINE__, 2, 3.2f);
352 check_fpr(__LINE__, 3, 3.3f);
353 clearall;
354 f_sfff(sfff_loc);
355 check_fpr(__LINE__, 1, 3.1f);
356 check_fpr(__LINE__, 2, 3.2f);
357 check_fpr(__LINE__, 3, 3.3f);
361 struct sffff sffff_loc = { 4.1f, 4.2f, 4.3f, 4.4f };
362 clearall;
363 f_sffff(sffff_loc);
364 check_gpr_float_pair(__LINE__, 3, 4.1f, 4.2f);
365 check_gpr_float_pair(__LINE__, 4, 4.3f, 4.4f);
369 struct sdd sdd_loc = { 2.1, 2.2 };
370 clearall;
371 f_sdd(sdd_loc);
372 /* 16-byte struct is passed in two GPRs. */
373 check_gpr_double(__LINE__, 3, 2.1);
374 check_gpr_double(__LINE__, 4, 2.2);
378 struct sddd sddd_loc = { 3.1, 3.2, 3.3 };
379 clearall;
380 f_sddd(sddd_loc);
381 check_fpr(__LINE__, 1, 3.1);
382 check_fpr(__LINE__, 2, 3.2);
383 check_fpr(__LINE__, 3, 3.3);
387 struct sdddd sdddd_loc = { 4.1, 4.2, 4.3, 4.4 };
388 clearall;
389 f_sdddd(sdddd_loc);
390 check_fpr(__LINE__, 1, 4.1);
391 check_fpr(__LINE__, 2, 4.2);
392 check_fpr(__LINE__, 3, 4.3);
393 check_fpr(__LINE__, 4, 4.4);
397 struct s3d s3d_loc = { 89.92, 4.89, 90.9 };
398 clearall;
399 f_s3d(s3d_loc);
400 check_gpr_double (__LINE__, 3, 89.92);
401 check_gpr_double (__LINE__, 4, 4.89);
402 check_gpr_double (__LINE__, 5, 90.9);
406 s3c_loc.ch[0] = 'A';
407 s3c_loc.ch[1] = 'B';
408 s3c_loc.ch[2] = 'C';
409 ssc_loc.sh = 0x1234;
410 ssc_loc.ch = 'D';
411 clearall;
412 f_s3c_ssc(s3c_loc, ssc_loc);
416 struct sif sif_loc_n = { 334, 4.3f };
417 long floatcast;
418 floatcast = *((int *) &(sif_loc_n.f));
419 clearall;
420 fi_sif(29, sif_loc_n);
421 check_gpr (__LINE__, 3, 29);
422 check_gpr (__LINE__, 4, 334LL << 32 | floatcast);
423 #ifdef STRUCT8INT
424 #else
425 check_fpr (__LINE__, 1, 4.3f);
426 #endif
427 clearall;
428 fi_sif_i(31, sif_loc_n, 33);
429 check_gpr (__LINE__, 3, 31);
430 check_gpr (__LINE__, 4, 334LL << 32 | floatcast);
431 #ifdef STRUCT8INT
432 #else
433 check_fpr (__LINE__, 1, 4.3f);
434 #endif
435 check_gpr (__LINE__, 5, 33);
439 struct sfi sfi_loc_n = { 4.145f, 335 };
440 clearall;
441 fi_sfi(29, sfi_loc_n);
442 check_gpr (__LINE__, 3, 29);
443 #ifdef STRUCT8INT
444 check_gpr (__LINE__, 4, 0x4084a3d70000014fLL);
445 #else
446 check_fpr (__LINE__, 1, 4.145f);
447 check_gpr (__LINE__, 4, 335);
448 #endif
452 struct sfi sfi_loc_n = { 4.145f, 335 };
453 clearall;
454 fi_sfi_if (29, sfi_loc_n, 65, 9.8f);
455 check_gpr (__LINE__, 3, 29);
456 #ifdef STRUCT8INT
457 check_gpr (__LINE__, 4, 0x4084a3d70000014fLL);
458 #else
459 check_fpr (__LINE__, 1, 4.145f);
460 check_gpr (__LINE__, 4, 335);
461 #endif
462 check_gpr (__LINE__, 5, 65);
463 check_gpr (__LINE__, 6, 0x666);
464 #ifdef STRUCT8INT
465 check_fpr (__LINE__, 1, 9.8f);
466 #else
467 check_fpr (__LINE__, 2, 9.8f);
468 #endif
469 check_gpr (__LINE__, 7, 0x777);
473 struct sfill sfill_loc_n = { 4.145f, 335, 10000000000LL, 20000000000LL };
474 clearall;
475 fi_sfill(29, sfill_loc_n);
476 check_gpr (__LINE__, 3, 29);
477 check_fpr (__LINE__, 1, 4.145f);
478 check_gpr (__LINE__, 4, 335);
479 check_gpr (__LINE__, 5, 10000000000LL);
480 check_gpr (__LINE__, 6, 20000000000LL);
484 struct sfl sfl_loc_n = { 4.145f, 335 };
485 clearall;
486 f_sfl (sfl_loc_n);
487 check_gpr_float_pair (__LINE__, 3, 4.145f, 0.0f);
488 check_gpr (__LINE__, 4, 335);
489 check_gpr (__LINE__, 5, 0x555);
490 clearall;
491 f_sfl_sfl_sfl_sfl_sfl (sfl_loc_n, sfl_loc_n, sfl_loc_n, sfl_loc_n, sfl_loc_n);
492 check_gpr_float_pair (__LINE__, 3, 4.145f, 0.0f);
493 check_gpr (__LINE__, 4, 335);
494 check_gpr (__LINE__, 6, 335);
495 check_gpr (__LINE__, 8, 335);
496 check_gpr (__LINE__, 10, 335);
500 struct sfldl sfldl_loc_n = { 4.145f, 335, 3.3, 336 };
501 clearall;
502 f_sfldl (sfldl_loc_n);
503 check_fpr (__LINE__, 1, 4.145f);
504 check_gpr (__LINE__, 4, 335);
505 check_fpr (__LINE__, 2, 3.3);
506 check_gpr (__LINE__, 6, 336);
510 char *p1 = "abc";
511 char *p2 = "def";
512 char *p3 = "ghi";
513 struct sfpp sfpp_loc_n = { 4.145f, p1, p2 };
514 clearall;
515 f_sfpp_p(sfpp_loc_n, p3);
516 check_fpr (__LINE__, 1, 4.145f);
517 check_gpr (__LINE__, 4, (long) p1);
518 check_gpr (__LINE__, 5, (long) p2);
519 check_gpr (__LINE__, 6, (long) p3);
523 struct sff sff_loc_n = { 4.145f, 335.3f };
524 clearall;
525 fi_sff(29, sff_loc_n);
526 check_gpr (__LINE__, 3, 29);
527 #ifdef STRUCT8INT
528 check_gpr_float_pair (__LINE__, 4, 4.145f, 335.3f);
529 #else
530 check_fpr (__LINE__, 1, 4.145f);
531 check_fpr (__LINE__, 2, 335.3f);
532 #endif
536 struct sfD sfD_loc_n = { 4.145f, 335.335 };
537 clearall;
538 f_sfD_sfD_sfD_sfD_sfD (sfD_loc_n, sfD_loc_n, sfD_loc_n, sfD_loc_n, sfD_loc_n);
539 check_fpr (__LINE__, 1, 4.145f);
540 check_fpr (__LINE__, 2, 335.335);
541 check_fpr (__LINE__, 4, 4.145f);
542 check_fpr (__LINE__, 5, 335.335);
543 check_fpr (__LINE__, 7, 4.145f);
544 check_fpr (__LINE__, 10, 4.145f);
545 check_fpr (__LINE__, 13, 4.145f);
549 struct sidi sidi_loc_n = { 257, 4.14515, 258 };
550 clearall;
551 fi_sidi(16, sidi_loc_n);
552 check_gpr (__LINE__, 3, 16);
553 check_fpr (__LINE__, 1, 4.14515);
554 check_gpr (__LINE__, 4, 257LL << 32);
555 check_gpr (__LINE__, 5, 0x555);
556 check_gpr (__LINE__, 6, 258LL << 32);
559 sfi_loc.f = 5.2f;
560 sfi_loc.i = 98;
561 clearall;
562 fifvf_sfi_dots(41, 4.3f, vf_loc, sfi_loc, 4.63f, vi_loc, sfi_loc2);
563 __asm__ ("\n");
564 check_gpr (__LINE__, 3, 41);
565 check_fpr (__LINE__, 1, 4.3f); /* float skips r4 */
566 check_vr_float(2, 7.1f, 7.2f, 7.3f, 7.4f); /* vector skips r5/r6 */
567 #ifdef STRUCT8INT
568 check_gpr (__LINE__, 7, 0x40a6666600000062);
569 #else
570 check_fpr (__LINE__, 2, sfi_loc.f);
571 check_gpr (__LINE__, 7, sfi_loc.i);
572 #endif
573 /* start of varying parameters */
574 #ifdef STRUCT8INT
575 check_fpr (__LINE__, 2, 4.63f);
576 #else
577 check_fpr (__LINE__, 3, 4.63f);
578 #endif
579 check_gpr_double (__LINE__, 8, 4.63f);
580 /* vector takes up r9/r10 */
581 /* sfi_loc2 on stack */
583 clearall;
584 sfii_loc.f = 5.2f;
585 sfii_loc.i = 98;
586 sfii_loc.j = 777;
587 clearall;
588 fifvf_sfii_dots(41, 4.3f, vf_loc, sfii_loc, 4.63f, vi_loc, sfii_loc2);
589 __asm__ ("\n");
590 check_gpr (__LINE__, 3, 41);
591 check_fpr (__LINE__, 1, 4.3f); /* float skips r4 */
592 check_vr_float(2, 7.1f, 7.2f, 7.3f, 7.4f); /* vector skips r5/r6 */
593 check_fpr (__LINE__, 2, sfii_loc.f);
594 check_gpr (__LINE__, 7, sfii_loc.i);
595 check_gpr (__LINE__, 8, ((long)sfii_loc.j) << 32);
596 /* start of varying parameters */
597 check_fpr (__LINE__, 3, 4.63f);
598 check_gpr_double (__LINE__, 9, 4.63f);
599 /* vector takes up r10/stack (?) */
600 /* sfii_loc2 on stack */
602 if (numerrs > 0)
603 abort ();
604 return 0;
607 int dumpall()
609 int i;
611 printf("\n");
612 for (i = 3; i <= 10; ++i)
613 #ifdef __LP64__
614 printf("r%d=0x%16.16lx ", i, gparms.gprs[i]);
615 #else
616 printf("r%d=0x%8.8x ", i, gparms.gprs[i]);
617 #endif
618 printf("\n");
619 for (i = 1; i <= 13; ++i)
620 printf("f%d=%8.8f ", i, gparms.fprs[i]);
621 printf("\n");
622 for (i = 0; i <= 4; ++i)
623 printf("v%d=(%x,%x,%x,%x) ", i,
624 gparms.vrs[i].elts.ielts[0], gparms.vrs[i].elts.ielts[1],
625 gparms.vrs[i].elts.ielts[2], gparms.vrs[i].elts.ielts[3]);
626 printf("\n");
627 for (i = 112; i < 152; ++i)
629 if (i > 112 && i % 8 == 0)
630 printf(" | ");
631 printf("%02x", gparms.stack[i]);
633 printf("\n");