1 #include <stdarg.h> 2 3 #include "compat-common.h" 4 5 #ifdef SKIP_VA 6 const int test_va = 0; 7 #else 8 const int test_va = 1; 9 #endif 10 11 #define T(N, NAME, TYPE) \ 12 struct S##NAME##N { TYPE i[N]; }; \ 13 \ 14 extern struct S##NAME##N g1s##NAME##N, g2s##NAME##N; \ 15 extern struct S##NAME##N g3s##NAME##N, g4s##NAME##N; \ 16 extern struct S##NAME##N g5s##NAME##N, g6s##NAME##N; \ 17 extern struct S##NAME##N g7s##NAME##N, g8s##NAME##N; \ 18 extern struct S##NAME##N g9s##NAME##N, g10s##NAME##N; \ 19 extern struct S##NAME##N g11s##NAME##N, g12s##NAME##N; \ 20 extern struct S##NAME##N g13s##NAME##N, g14s##NAME##N; \ 21 extern struct S##NAME##N g15s##NAME##N, g16s##NAME##N; \ 22 \ 23 extern void check##NAME##N (struct S##NAME##N *p, int i); \ 24 extern void \ 25 test2_##NAME##N (struct S##NAME##N s1, struct S##NAME##N s2, \ 26 struct S##NAME##N s3, struct S##NAME##N s4, \ 27 struct S##NAME##N s5, struct S##NAME##N s6, \ 28 struct S##NAME##N s7, struct S##NAME##N s8); \ 29 \ 30 void \ 31 init##NAME##N (struct S##NAME##N *p, int i) \ 32 { \ 33 int j; \ 34 for (j = 0; j < N; j++) \ 35 p->i[j] = i + j; \ 36 } \ 37 \ 38 void \ 39 checkg##NAME##N (void) \ 40 { \ 41 check##NAME##N ( &g1s##NAME##N, 1*16); \ 42 check##NAME##N ( &g2s##NAME##N, 2*16); \ 43 check##NAME##N ( &g3s##NAME##N, 3*16); \ 44 check##NAME##N ( &g4s##NAME##N, 4*16); \ 45 check##NAME##N ( &g5s##NAME##N, 5*16); \ 46 check##NAME##N ( &g6s##NAME##N, 6*16); \ 47 check##NAME##N ( &g7s##NAME##N, 7*16); \ 48 check##NAME##N ( &g8s##NAME##N, 8*16); \ 49 check##NAME##N ( &g9s##NAME##N, 9*16); \ 50 check##NAME##N (&g10s##NAME##N, 10*16); \ 51 check##NAME##N (&g11s##NAME##N, 11*16); \ 52 check##NAME##N (&g12s##NAME##N, 12*16); \ 53 check##NAME##N (&g13s##NAME##N, 13*16); \ 54 check##NAME##N (&g14s##NAME##N, 14*16); \ 55 check##NAME##N (&g15s##NAME##N, 15*16); \ 56 check##NAME##N (&g16s##NAME##N, 16*16); \ 57 } \ 58 \ 59 void \ 60 test##NAME##N (struct S##NAME##N s1, struct S##NAME##N s2, \ 61 struct S##NAME##N s3, struct S##NAME##N s4, \ 62 struct S##NAME##N s5, struct S##NAME##N s6, \ 63 struct S##NAME##N s7, struct S##NAME##N s8, \ 64 struct S##NAME##N s9, struct S##NAME##N s10, \ 65 struct S##NAME##N s11, struct S##NAME##N s12, \ 66 struct S##NAME##N s13, struct S##NAME##N s14, \ 67 struct S##NAME##N s15, struct S##NAME##N s16) \ 68 { \ 69 check##NAME##N (&s1, 1*16); \ 70 check##NAME##N (&s2, 2*16); \ 71 check##NAME##N (&s3, 3*16); \ 72 check##NAME##N (&s4, 4*16); \ 73 check##NAME##N (&s5, 5*16); \ 74 check##NAME##N (&s6, 6*16); \ 75 check##NAME##N (&s7, 7*16); \ 76 check##NAME##N (&s8, 8*16); \ 77 check##NAME##N (&s9, 9*16); \ 78 check##NAME##N (&s10, 10*16); \ 79 check##NAME##N (&s11, 11*16); \ 80 check##NAME##N (&s12, 12*16); \ 81 check##NAME##N (&s13, 13*16); \ 82 check##NAME##N (&s14, 14*16); \ 83 check##NAME##N (&s15, 15*16); \ 84 check##NAME##N (&s16, 16*16); \ 85 } \ 86 \ 87 void \ 88 testva##NAME##N (int n, ...) \ 89 { \ 90 int i; \ 91 va_list ap; \ 92 if (test_va) \ 93 { \ 94 va_start (ap, n); \ 95 for (i = 0; i < n; i++) \ 96 { \ 97 struct S##NAME##N t = va_arg (ap, struct S##NAME##N); \ 98 check##NAME##N (&t, (i+1)*16); \ 99 } \ 100 va_end (ap); \ 101 } \ 102 } 103 104 #ifndef SKIP_ZERO_ARRAY 105 T(0, uc, unsigned char) 106 #endif 107 T(1, uc, unsigned char) 108 T(2, uc, unsigned char) 109 T(3, uc, unsigned char) 110 T(4, uc, unsigned char) 111 T(5, uc, unsigned char) 112 T(6, uc, unsigned char) 113 T(7, uc, unsigned char) 114 T(8, uc, unsigned char) 115 T(9, uc, unsigned char) 116 T(10, uc, unsigned char) 117 T(11, uc, unsigned char) 118 T(12, uc, unsigned char) 119 T(13, uc, unsigned char) 120 T(14, uc, unsigned char) 121 T(15, uc, unsigned char) 122 #ifndef SKIP_ZERO_ARRAY 123 T(0, us, unsigned short) 124 #endif 125 T(1, us, unsigned short) 126 T(2, us, unsigned short) 127 T(3, us, unsigned short) 128 T(4, us, unsigned short) 129 T(5, us, unsigned short) 130 T(6, us, unsigned short) 131 T(7, us, unsigned short) 132 T(8, us, unsigned short) 133 T(9, us, unsigned short) 134 T(10, us, unsigned short) 135 T(11, us, unsigned short) 136 T(12, us, unsigned short) 137 T(13, us, unsigned short) 138 T(14, us, unsigned short) 139 T(15, us, unsigned short) 140 #ifndef SKIP_ZERO_ARRAY 141 T(0, ui, unsigned int) 142 #endif 143 T(1, ui, unsigned int) 144 T(2, ui, unsigned int) 145 T(3, ui, unsigned int) 146 T(4, ui, unsigned int) 147 T(5, ui, unsigned int) 148 T(6, ui, unsigned int) 149 T(7, ui, unsigned int) 150 T(8, ui, unsigned int) 151 T(9, ui, unsigned int) 152 T(10, ui, unsigned int) 153 T(11, ui, unsigned int) 154 T(12, ui, unsigned int) 155 T(13, ui, unsigned int) 156 T(14, ui, unsigned int) 157 T(15, ui, unsigned int) 158