blob: 5954104aa76dea2112730b14d7015776b538ef12 [file] [log] [blame]
#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
}