19 lay(char *p
, int start
, int end
, int n
)
29 for (b
= 0; b
+ 8 <= start
; b
+= 8)
33 for (mask
= 0x80; mask
; b
++, mask
>>= 1)
34 if ((ch
& mask
) != mask
)
41 for (mask
= 0x80; b
< start
; b
++, mask
>>= 1)
42 if ((ch
& mask
) != mask
)
44 for (; mask
&& b
< end
; b
++, mask
>>= 1)
49 for (; b
+ 8 <= end
; b
+= 8)
53 for (mask
= 0x80; mask
; b
++, mask
>>= 1)
61 for (mask
= 0x80; b
< end
; b
++, mask
>>= 1)
64 for (; mask
&& b
< n
; b
++, mask
>>= 1)
65 if ((ch
& mask
) != mask
)
69 for (; b
+ 8 <= n
; b
+= 8)
73 for (mask
= 0x80; mask
; b
++, mask
>>= 1)
74 if ((ch
& mask
) != mask
)
82 initn_a(signed char p1
, short p2
, int p3
, double p4
, vector
float p5
)
92 check(i
.m1
== 77, "i.m1");
93 check(i
.m2
== 1924, "i.m2");
94 check(i
.m3
== -1471601920, "i.m3");
95 check(vec_all_eq(i
.m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),
98 check(sizeof(n_a
) == 32, "sizeof(n_a)");
100 check(offsetof(n_a
, m1
) == 0, "offsetof(m1)");
101 check(offsetof(n_a
, m2
) == 2, "offsetof(m2)");
102 check(offsetof(n_a
, m3
) == 4, "offsetof(m3)");
103 check(offsetof(n_a
, m4
) == 8, "offsetof(m4)");
104 check(offsetof(n_a
, m5
) == 16, "offsetof(m5)");
106 check(sizeof(i
.m1
) == 1, "sizeof(m1)");
107 check(sizeof(i
.m2
) == 2, "sizeof(m2)");
108 check(sizeof(i
.m3
) == 4, "sizeof(m3)");
109 check(sizeof(i
.m4
) == 8, "sizeof(m4)");
110 check(sizeof(i
.m5
) == 16, "sizeof(m5)");
112 #define lay_check(field) do { \
113 memset((char *)&i, 0xFF, sizeof(i)); \
115 check(lay((char *)&i, \
116 offsetof(n_a, field), \
117 offsetof(n_a, field) + sizeof(i.field), \
118 sizeof(i)) == sizeof(i)*8, \
119 "lay(" #field ")"); \
121 #define lay_reset(field) i.field = 0
128 #define lay_reset(field) i.field = ((vector float){0,0,0,0})
150 check(a
->m1
== 77, "a->m1");
151 check(a
->m2
== 1924, "a->m2");
152 check(a
->m3
== -1471601920, "a->m3");
153 check(vec_all_eq(a
->m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),
164 a
->m5
= ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08});
168 varlistn_a(signed char p1
, va_list ap
)
172 q
.m2
= va_arg(ap
, int);
173 q
.m3
= va_arg(ap
, int);
174 q
.m4
= va_arg(ap
, double);
175 q
.m5
= va_arg(ap
, vector
float);
177 check(q
.m1
== 77, "q.m1");
178 check(q
.m2
== 1924, "q.m2");
179 check(q
.m3
== -1471601920, "q.m3");
180 check(vec_all_eq(q
.m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),
185 varargsn_a(signed char p1
, ...)
192 q
.m2
= va_arg(ap
, int);
193 q
.m3
= va_arg(ap
, int);
194 q
.m4
= va_arg(ap
, double);
195 q
.m5
= va_arg(ap
, vector
float);
198 check(q
.m1
== 77, "q.m1");
199 check(q
.m2
== 1924, "q.m2");
200 check(q
.m3
== -1471601920, "q.m3");
201 check(vec_all_eq(q
.m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),
206 r
.m2
= va_arg(ap
, int);
207 r
.m3
= va_arg(ap
, int);
208 r
.m4
= va_arg(ap
, double);
209 r
.m5
= va_arg(ap
, vector
float);
212 check(r
.m1
== 77, "r.m1");
213 check(r
.m2
== 1924, "r.m2");
214 check(r
.m3
== -1471601920, "r.m3");
215 check(vec_all_eq(r
.m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),
234 static n_a i
= { 77, 1924, -1471601920, 3.65e+18, {-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08} };
236 memset((char *)&(v
), -1, sizeof(v
));
238 check(lay((char *)&v
, sizeof(n_a
), sizeof(n_a
)*2, sizeof(n_a
)*3) == sizeof(n_a
)*3*8,
239 "structure assignment");
241 check(i
.m1
== 77, "i.m1");
242 check(i
.m2
== 1924, "i.m2");
243 check(i
.m3
== -1471601920, "i.m3");
244 check(vec_all_eq(i
.m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),
247 initn_a(77, 1924, -1471601920, 3.65e+18, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08}));
248 varargsn_a(77, 1924, -1471601920, 3.65e+18, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08}));
252 gn_a
.m3
= -1471601920;
254 gn_a
.m5
= ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08});
257 check(a
.m1
== 77, "a.m1");
258 check(a
.m2
== 1924, "a.m2");
259 check(a
.m3
== -1471601920, "a.m3");
260 check(vec_all_eq(a
.m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),
265 check(p
->m1
== 77, "p->m1");
266 check(p
->m2
== 1924, "p->m2");
267 check(p
->m3
== -1471601920, "p->m3");
268 check(vec_all_eq(p
->m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),
273 check(gn_a
.m1
== 77, "gn_a.m1");
274 check(gn_a
.m2
== 1924, "gn_a.m2");
275 check(gn_a
.m3
== -1471601920, "gn_a.m3");
276 check(vec_all_eq(gn_a
.m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),
286 check(v
[2].m1
== 77, "v[2].m1");
287 check(v
[2].m2
== 1924, "v[2].m2");
288 check(v
[2].m3
== -1471601920, "v[2].m3");
289 check(vec_all_eq(v
[2].m5
, ((vector
float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})),