#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 }