| #include "compat-common.h" |
| |
| #include "fp2-struct-defs.h" |
| #include "fp2-struct-check.h" |
| |
| #define TEST(TYPE) \ |
| TYPE g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE; \ |
| TYPE g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE; \ |
| TYPE g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE; \ |
| TYPE g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE; \ |
| \ |
| extern void init##TYPE (TYPE *p, double x); \ |
| extern void checkg##TYPE (void); \ |
| extern void \ |
| test##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4, \ |
| TYPE s5, TYPE s6, TYPE s7, TYPE s8, \ |
| TYPE s9, TYPE s10, TYPE s11, TYPE s12, \ |
| TYPE s13, TYPE s14, TYPE s15, TYPE s16); \ |
| extern void testva##TYPE (int n, ...); \ |
| \ |
| void \ |
| test2_##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4, \ |
| TYPE s5, TYPE s6, TYPE s7, TYPE s8) \ |
| { \ |
| test##TYPE (s1, g2s##TYPE, s2, g4s##TYPE, \ |
| s3, g6s##TYPE, s4, g8s##TYPE, \ |
| s5, g10s##TYPE, s6, g12s##TYPE, \ |
| s7, g14s##TYPE, s8, g16s##TYPE); \ |
| } \ |
| \ |
| void \ |
| testit##TYPE (void) \ |
| { \ |
| DEBUG_FPUTS (#TYPE); \ |
| DEBUG_FPUTS (" init: "); \ |
| init##TYPE ( &g1s##TYPE, (double)1); \ |
| init##TYPE ( &g2s##TYPE, (double)2); \ |
| init##TYPE ( &g3s##TYPE, (double)3); \ |
| init##TYPE ( &g4s##TYPE, (double)4); \ |
| init##TYPE ( &g5s##TYPE, (double)5); \ |
| init##TYPE ( &g6s##TYPE, (double)6); \ |
| init##TYPE ( &g7s##TYPE, (double)7); \ |
| init##TYPE ( &g8s##TYPE, (double)8); \ |
| init##TYPE ( &g9s##TYPE, (double)9); \ |
| init##TYPE (&g10s##TYPE, (double)10); \ |
| init##TYPE (&g11s##TYPE, (double)11); \ |
| init##TYPE (&g12s##TYPE, (double)12); \ |
| init##TYPE (&g13s##TYPE, (double)13); \ |
| init##TYPE (&g14s##TYPE, (double)14); \ |
| init##TYPE (&g15s##TYPE, (double)15); \ |
| init##TYPE (&g16s##TYPE, (double)16); \ |
| checkg##TYPE (); \ |
| DEBUG_NL; \ |
| DEBUG_FPUTS (#TYPE); \ |
| DEBUG_FPUTS (" test: "); \ |
| test##TYPE (g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ |
| g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ |
| g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \ |
| DEBUG_NL; \ |
| DEBUG_FPUTS (#TYPE); \ |
| DEBUG_FPUTS (" testva:"); \ |
| DEBUG_NL; \ |
| testva##TYPE (1, \ |
| g1s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (2, \ |
| g1s##TYPE, g2s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (3, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (4, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (5, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (6, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (7, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (8, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (9, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ |
| g9s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (10, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ |
| g9s##TYPE, g10s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (11, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ |
| g9s##TYPE, g10s##TYPE, g11s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (12, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ |
| g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (13, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ |
| g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ |
| g13s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (14, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ |
| g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ |
| g13s##TYPE, g14s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (15, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ |
| g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ |
| g13s##TYPE, g14s##TYPE, g15s##TYPE); \ |
| DEBUG_NL; \ |
| testva##TYPE (16, \ |
| g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ |
| g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ |
| g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ |
| g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \ |
| DEBUG_NL; \ |
| DEBUG_FPUTS (#TYPE); \ |
| DEBUG_FPUTS (" test2: "); \ |
| test2_##TYPE (g1s##TYPE, g3s##TYPE, g5s##TYPE, g7s##TYPE, \ |
| g9s##TYPE, g11s##TYPE, g13s##TYPE, g15s##TYPE); \ |
| DEBUG_NL; \ |
| } |
| |
| TEST(Sfd) |
| TEST(Sfl) |
| TEST(Sdf) |
| TEST(Sdl) |
| TEST(Slf) |
| TEST(Sld) |
| TEST(Sfdl) |
| TEST(Sfld) |
| TEST(Sdfl) |
| TEST(Sdlf) |
| TEST(Slfd) |
| TEST(Sldf) |
| |
| #undef T |
| |
| void |
| struct_by_value_10_x () |
| { |
| DEBUG_INIT |
| |
| #define T(TYPE) testit##TYPE (); |
| |
| T(Sfd) |
| T(Sfl) |
| T(Sdf) |
| T(Sdl) |
| T(Slf) |
| T(Sld) |
| T(Sfdl) |
| T(Sfld) |
| T(Sdfl) |
| T(Sdlf) |
| T(Slfd) |
| T(Sldf) |
| |
| DEBUG_FINI |
| |
| if (fails != 0) |
| abort (); |
| |
| #undef T |
| } |