23 badsize(
size_t sizeoftype,
size_t hardcodetype)
25 return sizeoftype != hardcodetype;
35 SDL_Log(
"sizeof(Uint8) != 1, instead = %u\n",
36 (
unsigned int)
sizeof(
Uint8));
41 SDL_Log(
"sizeof(Uint16) != 2, instead = %u\n",
42 (
unsigned int)
sizeof(
Uint16));
47 SDL_Log(
"sizeof(Uint32) != 4, instead = %u\n",
48 (
unsigned int)
sizeof(
Uint32));
53 SDL_Log(
"sizeof(Uint64) != 8, instead = %u\n",
54 (
unsigned int)
sizeof(
Uint64));
57 if (verbose && !error)
58 SDL_Log(
"All data types are the expected size.\n");
60 return (error ? 1 : 0);
71 Uint32 value32 = 0xEFBEADDE;
72 Uint32 swapped32 = 0xDEADBEEF;
77 value64 |= 0xCDAB3412;
78 swapped64 = 0x1234ABCD;
80 swapped64 |= 0xDEADBEEF;
83 SDL_Log(
"Detected a %s endian machine.\n",
86 if ((*((
char *) &value) >> 4) == 0
x1) {
93 SDL_Log(
"Actually a %s endian machine!\n",
99 SDL_Log(
"Value 16 = 0x%X, swapped = 0x%X\n", value16,
104 SDL_Log(
"16 bit value swapped incorrectly!\n");
109 SDL_Log(
"Value 32 = 0x%X, swapped = 0x%X\n", value32,
114 SDL_Log(
"32 bit value swapped incorrectly!\n");
124 SDL_Log(
"64 bit value swapped incorrectly!\n");
128 return (error ? 1 : 0);
133 (*(
long long *)result) = ((*(
long long *)a) * (*(
long long *)b));
134 return (*(
long long *)
result) == (*(
long long *)expected);
139 (*(
long long *)result) = ((*(
long long *)a) / (*(
long long *)b));
140 return (*(
long long *)
result) == (*(
long long *)expected);
145 (*(
long long *)result) = ((*(
long long *)a) % (*(
long long *)b));
146 return (*(
long long *)
result) == (*(
long long *)expected);
151 (*(
unsigned long long *)result) = ((*(
unsigned long long *)a) / (*(
unsigned long long *)b));
152 return (*(
unsigned long long *)
result) == (*(
unsigned long long *)expected);
157 (*(
unsigned long long *)result) = ((*(
unsigned long long *)a) % (*(
unsigned long long *)b));
158 return (*(
unsigned long long *)
result) == (*(
unsigned long long *)expected);
163 (*(
long long *)result) = (*(
long long *)a) << arg;
164 return (*(
long long *)
result) == (*(
long long *)expected);
169 (*(
unsigned long long *)result) = (*(
unsigned long long *)a) << arg;
170 return (*(
unsigned long long *)
result) == (*(
unsigned long long *)expected);
175 (*(
long long *)result) = (*(
long long *)a) >> arg;
176 return (*(
long long *)
result) == (*(
long long *)expected);
181 (*(
unsigned long long *)result) = (*(
unsigned long long *)a) >> arg;
182 return (*(
unsigned long long *)
result) == (*(
unsigned long long *)expected);
191 unsigned long long a,
b;
199 {
"_allshl", &
TST_allshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 1, 0xFFFFFFFFFFFFFFFEll},
200 {
"_allshl", &
TST_allshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 32, 0xFFFFFFFF00000000ll},
201 {
"_allshl", &
TST_allshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 33, 0xFFFFFFFE00000000ll},
202 {
"_allshl", &
TST_allshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 0, 0xFFFFFFFFFFFFFFFFll},
204 {
"_allshr", &
TST_allshr, 0xAAAAAAAA55555555ll, 0ll, 63, 0xFFFFFFFFFFFFFFFFll},
206 {
"_allshr", &
TST_allshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 1, 0xFFFFFFFFFFFFFFFFll},
207 {
"_allshr", &
TST_allshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 32, 0xFFFFFFFFFFFFFFFFll},
208 {
"_allshr", &
TST_allshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 33, 0xFFFFFFFFFFFFFFFFll},
209 {
"_allshr", &
TST_allshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 0, 0xFFFFFFFFFFFFFFFFll},
211 {
"_allshr", &
TST_allshr, 0x5F5F5F5F5F5F5F5Fll, 0ll, 1, 0x2FAFAFAFAFAFAFAFll},
212 {
"_allshr", &
TST_allshr, 0x5F5F5F5F5F5F5F5Fll, 0ll, 32, 0x000000005F5F5F5Fll},
213 {
"_allshr", &
TST_allshr, 0x5F5F5F5F5F5F5F5Fll, 0ll, 33, 0x000000002FAFAFAFll},
216 {
"_aullshl", &
TST_aullshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 1, 0xFFFFFFFFFFFFFFFEll},
217 {
"_aullshl", &
TST_aullshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 32, 0xFFFFFFFF00000000ll},
218 {
"_aullshl", &
TST_aullshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 33, 0xFFFFFFFE00000000ll},
219 {
"_aullshl", &
TST_aullshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 0, 0xFFFFFFFFFFFFFFFFll},
222 {
"_aullshr", &
TST_aullshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 1, 0x7FFFFFFFFFFFFFFFll},
223 {
"_aullshr", &
TST_aullshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 32, 0x00000000FFFFFFFFll},
224 {
"_aullshr", &
TST_aullshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 33, 0x000000007FFFFFFFll},
225 {
"_aullshr", &
TST_aullshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 0, 0xFFFFFFFFFFFFFFFFll},
227 {
"_allmul", &
TST_allmul, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000000ll, 0, 0x0000000000000000ll},
228 {
"_allmul", &
TST_allmul, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
229 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x000000000FFFFFFFll},
230 {
"_allmul", &
TST_allmul, 0x0000000000000001ll, 0x000000000FFFFFFFll, 0, 0x000000000FFFFFFFll},
231 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000000000010ll, 0, 0x00000000FFFFFFF0ll},
232 {
"_allmul", &
TST_allmul, 0x0000000000000010ll, 0x000000000FFFFFFFll, 0, 0x00000000FFFFFFF0ll},
233 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000000000100ll, 0, 0x0000000FFFFFFF00ll},
234 {
"_allmul", &
TST_allmul, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000FFFFFFF00ll},
235 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000010000000ll, 0, 0x00FFFFFFF0000000ll},
236 {
"_allmul", &
TST_allmul, 0x0000000010000000ll, 0x000000000FFFFFFFll, 0, 0x00FFFFFFF0000000ll},
237 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000080000000ll, 0, 0x07FFFFFF80000000ll},
238 {
"_allmul", &
TST_allmul, 0x0000000080000000ll, 0x000000000FFFFFFFll, 0, 0x07FFFFFF80000000ll},
239 {
"_allmul", &
TST_allmul, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0xFFFFFFFF00000000ll},
240 {
"_allmul", &
TST_allmul, 0x0000000080000000ll, 0xFFFFFFFFFFFFFFFEll, 0, 0xFFFFFFFF00000000ll},
241 {
"_allmul", &
TST_allmul, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000008ll, 0, 0xFFFFFFFEFFFFFFF0ll},
242 {
"_allmul", &
TST_allmul, 0x0000000080000008ll, 0xFFFFFFFFFFFFFFFEll, 0, 0xFFFFFFFEFFFFFFF0ll},
243 {
"_allmul", &
TST_allmul, 0x00000000FFFFFFFFll, 0x00000000FFFFFFFFll, 0, 0xFFFFFFFE00000001ll},
245 {
"_alldiv", &
TST_alldiv, 0x0000000000000000ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
246 {
"_alldiv", &
TST_alldiv, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
247 {
"_alldiv", &
TST_alldiv, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0xFFFFFFFFFFFFFFFFll},
248 {
"_alldiv", &
TST_alldiv, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000001ll, 0, 0xFFFFFFFFFFFFFFFFll},
249 {
"_alldiv", &
TST_alldiv, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0xFFFFFFFFFFFFFFFFll},
250 {
"_alldiv", &
TST_alldiv, 0x0000000000000001ll, 0x0000000000000001ll, 0, 0x0000000000000001ll},
251 {
"_alldiv", &
TST_alldiv, 0xFFFFFFFFFFFFFFFFll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000001ll},
252 {
"_alldiv", &
TST_alldiv, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x000000000FFFFFFFll},
253 {
"_alldiv", &
TST_alldiv, 0x0000000FFFFFFFFFll, 0x0000000000000010ll, 0, 0x00000000FFFFFFFFll},
254 {
"_alldiv", &
TST_alldiv, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000000000000ll},
255 {
"_alldiv", &
TST_alldiv, 0x00FFFFFFF0000000ll, 0x0000000010000000ll, 0, 0x000000000FFFFFFFll},
256 {
"_alldiv", &
TST_alldiv, 0x07FFFFFF80000000ll, 0x0000000080000000ll, 0, 0x000000000FFFFFFFll},
257 {
"_alldiv", &
TST_alldiv, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0x0000000000000000ll},
258 {
"_alldiv", &
TST_alldiv, 0xFFFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000080000008ll},
259 {
"_alldiv", &
TST_alldiv, 0x7FFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0xC000000080000008ll},
260 {
"_alldiv", &
TST_alldiv, 0x7FFFFFFEFFFFFFF0ll, 0x0000FFFFFFFFFFFEll, 0, 0x0000000000007FFFll},
261 {
"_alldiv", &
TST_alldiv, 0x7FFFFFFEFFFFFFF0ll, 0x7FFFFFFEFFFFFFF0ll, 0, 0x0000000000000001ll},
263 {
"_allrem", &
TST_allrem, 0x0000000000000000ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
264 {
"_allrem", &
TST_allrem, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
265 {
"_allrem", &
TST_allrem, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
266 {
"_allrem", &
TST_allrem, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
267 {
"_allrem", &
TST_allrem, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
268 {
"_allrem", &
TST_allrem, 0x0000000000000001ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
269 {
"_allrem", &
TST_allrem, 0xFFFFFFFFFFFFFFFFll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
270 {
"_allrem", &
TST_allrem, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
271 {
"_allrem", &
TST_allrem, 0x0000000FFFFFFFFFll, 0x0000000000000010ll, 0, 0x000000000000000Fll},
272 {
"_allrem", &
TST_allrem, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000000000100ll},
273 {
"_allrem", &
TST_allrem, 0x00FFFFFFF0000000ll, 0x0000000010000000ll, 0, 0x0000000000000000ll},
274 {
"_allrem", &
TST_allrem, 0x07FFFFFF80000000ll, 0x0000000080000000ll, 0, 0x0000000000000000ll},
275 {
"_allrem", &
TST_allrem, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0xFFFFFFFFFFFFFFFEll},
276 {
"_allrem", &
TST_allrem, 0xFFFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000000000000ll},
277 {
"_allrem", &
TST_allrem, 0x7FFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000000000000ll},
278 {
"_allrem", &
TST_allrem, 0x7FFFFFFEFFFFFFF0ll, 0x0000FFFFFFFFFFFEll, 0, 0x0000FFFF0000FFEEll},
279 {
"_allrem", &
TST_allrem, 0x7FFFFFFEFFFFFFF0ll, 0x7FFFFFFEFFFFFFF0ll, 0, 0x0000000000000000ll},
282 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000000ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
283 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
284 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
285 {
"_ualldiv", &
TST_ualldiv, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000001ll, 0, 0xFFFFFFFFFFFFFFFFll},
286 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
287 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000001ll, 0x0000000000000001ll, 0, 0x0000000000000001ll},
288 {
"_ualldiv", &
TST_ualldiv, 0xFFFFFFFFFFFFFFFFll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000001ll},
289 {
"_ualldiv", &
TST_ualldiv, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x000000000FFFFFFFll},
290 {
"_ualldiv", &
TST_ualldiv, 0x0000000FFFFFFFFFll, 0x0000000000000010ll, 0, 0x00000000FFFFFFFFll},
291 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000000000000ll},
292 {
"_ualldiv", &
TST_ualldiv, 0x00FFFFFFF0000000ll, 0x0000000010000000ll, 0, 0x000000000FFFFFFFll},
293 {
"_ualldiv", &
TST_ualldiv, 0x07FFFFFF80000000ll, 0x0000000080000000ll, 0, 0x000000000FFFFFFFll},
294 {
"_ualldiv", &
TST_ualldiv, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0x00000001FFFFFFFFll},
295 {
"_ualldiv", &
TST_ualldiv, 0xFFFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000000000000ll},
296 {
"_ualldiv", &
TST_ualldiv, 0x7FFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000000000000ll},
297 {
"_ualldiv", &
TST_ualldiv, 0x7FFFFFFEFFFFFFF0ll, 0x0000FFFFFFFFFFFEll, 0, 0x0000000000007FFFll},
298 {
"_ualldiv", &
TST_ualldiv, 0x7FFFFFFEFFFFFFF0ll, 0x7FFFFFFEFFFFFFF0ll, 0, 0x0000000000000001ll},
300 {
"_uallrem", &
TST_uallrem, 0x0000000000000000ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
301 {
"_uallrem", &
TST_uallrem, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
302 {
"_uallrem", &
TST_uallrem, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000001ll},
303 {
"_uallrem", &
TST_uallrem, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
304 {
"_uallrem", &
TST_uallrem, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000001ll},
305 {
"_uallrem", &
TST_uallrem, 0x0000000000000001ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
306 {
"_uallrem", &
TST_uallrem, 0xFFFFFFFFFFFFFFFFll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
307 {
"_uallrem", &
TST_uallrem, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
308 {
"_uallrem", &
TST_uallrem, 0x0000000FFFFFFFFFll, 0x0000000000000010ll, 0, 0x000000000000000Fll},
309 {
"_uallrem", &
TST_uallrem, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000000000100ll},
310 {
"_uallrem", &
TST_uallrem, 0x00FFFFFFF0000000ll, 0x0000000010000000ll, 0, 0x0000000000000000ll},
311 {
"_uallrem", &
TST_uallrem, 0x07FFFFFF80000000ll, 0x0000000080000000ll, 0, 0x0000000000000000ll},
312 {
"_uallrem", &
TST_uallrem, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0x000000007FFFFFFEll},
313 {
"_uallrem", &
TST_uallrem, 0xFFFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0xFFFFFFFEFFFFFFF0ll},
314 {
"_uallrem", &
TST_uallrem, 0x7FFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x7FFFFFFEFFFFFFF0ll},
315 {
"_uallrem", &
TST_uallrem, 0x7FFFFFFEFFFFFFF0ll, 0x0000FFFFFFFFFFFEll, 0, 0x0000FFFF0000FFEEll},
316 {
"_uallrem", &
TST_uallrem, 0x7FFFFFFEFFFFFFF0ll, 0x7FFFFFFEFFFFFFF0ll, 0, 0x0000000000000000ll},
328 unsigned long long result = 0;
329 unsigned int *al = (
unsigned int *)&t->
a;
330 unsigned int *bl = (
unsigned int *)&t->
b;
332 unsigned int *rl = (
unsigned int *)&
result;
336 SDL_Log(
"%s(0x%08X%08X, 0x%08X%08X, %3d, produced: 0x%08X%08X, expected: 0x%08X%08X\n",
337 t->
operation, al[1], al[0], bl[1], bl[0], t->
arg, rl[1], rl[0], el[1], el[0]);
341 if (verbose && (failed == 0))
342 SDL_Log(
"All 64bit instrinsic tests passed\n");
343 return (failed ? 1 : 0);
388 SDL_Log(
"'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n",
407 if (argv[1] && (
SDL_strcmp(argv[1],
"-q") == 0)) {
const struct SDL_AssertData * next
GLuint GLfloat GLfloat GLfloat x1
uint32_t Uint32
An unsigned 32-bit integer type.
#define SDL_GetAssertionReport
uint64_t Uint64
An unsigned 64-bit integer type.
unsigned long long expected_result
unsigned int trigger_count
SDL_FORCE_INLINE Uint32 SDL_Swap32(Uint32 x)
#define SDL_assert_paranoid(condition)
uint8_t Uint8
An unsigned 8-bit integer type.
SDL_FORCE_INLINE Uint16 SDL_Swap16(Uint16 x)
GLsizei const GLfloat * value
#define SDL_GetCPUCacheLineSize
#define SDL_assert(condition)
#define SDL_LogSetPriority
SDL_FORCE_INLINE Uint64 SDL_Swap64(Uint64 x)
uint16_t Uint16
An unsigned 16-bit integer type.
GLboolean GLboolean GLboolean GLboolean a
#define SDL_assert_release(condition)
GLboolean GLboolean GLboolean b