23 badsize(
size_t sizeoftype,
size_t hardcodetype)
25 return sizeoftype != hardcodetype;
55 SDL_Log(
"sizeof(Uint8) != 1, instead = %u\n",
56 (
unsigned int)
sizeof(
Uint8));
61 SDL_Log(
"sizeof(Uint16) != 2, instead = %u\n",
62 (
unsigned int)
sizeof(
Uint16));
67 SDL_Log(
"sizeof(Uint32) != 4, instead = %u\n",
68 (
unsigned int)
sizeof(
Uint32));
73 SDL_Log(
"sizeof(Uint64) != 8, instead = %u\n",
74 (
unsigned int)
sizeof(
Uint64));
77 if (verbose && !error)
78 SDL_Log(
"All data types are the expected size.\n");
80 return (error ? 1 : 0);
91 Uint32 value32 = 0xEFBEADDE;
92 Uint32 swapped32 = 0xDEADBEEF;
97 value64 |= 0xCDAB3412;
98 swapped64 = 0x1234ABCD;
100 swapped64 |= 0xDEADBEEF;
103 SDL_Log(
"Detected a %s endian machine.\n",
106 if ((*((
char *) &value) >> 4) == 0
x1) {
113 SDL_Log(
"Actually a %s endian machine!\n",
119 SDL_Log(
"Value 16 = 0x%X, swapped = 0x%X\n", value16,
124 SDL_Log(
"16 bit value swapped incorrectly!\n");
129 SDL_Log(
"Value 32 = 0x%X, swapped = 0x%X\n", value32,
134 SDL_Log(
"32 bit value swapped incorrectly!\n");
144 SDL_Log(
"64 bit value swapped incorrectly!\n");
148 return (error ? 1 : 0);
153 (*(
long long *)result) = ((*(
long long *)a) * (*(
long long *)b));
154 return (*(
long long *)
result) == (*(
long long *)expected);
159 (*(
long long *)result) = ((*(
long long *)a) / (*(
long long *)b));
160 return (*(
long long *)
result) == (*(
long long *)expected);
165 (*(
long long *)result) = ((*(
long long *)a) % (*(
long long *)b));
166 return (*(
long long *)
result) == (*(
long long *)expected);
171 (*(
unsigned long long *)result) = ((*(
unsigned long long *)a) / (*(
unsigned long long *)b));
172 return (*(
unsigned long long *)
result) == (*(
unsigned long long *)expected);
177 (*(
unsigned long long *)result) = ((*(
unsigned long long *)a) % (*(
unsigned long long *)b));
178 return (*(
unsigned long long *)
result) == (*(
unsigned long long *)expected);
183 (*(
long long *)result) = (*(
long long *)a) << arg;
184 return (*(
long long *)
result) == (*(
long long *)expected);
189 (*(
unsigned long long *)result) = (*(
unsigned long long *)a) << arg;
190 return (*(
unsigned long long *)
result) == (*(
unsigned long long *)expected);
195 (*(
long long *)result) = (*(
long long *)a) >> arg;
196 return (*(
long long *)
result) == (*(
long long *)expected);
201 (*(
unsigned long long *)result) = (*(
unsigned long long *)a) >> arg;
202 return (*(
unsigned long long *)
result) == (*(
unsigned long long *)expected);
211 unsigned long long a,
b;
219 {
"_allshl", &
TST_allshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 1, 0xFFFFFFFFFFFFFFFEll},
220 {
"_allshl", &
TST_allshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 32, 0xFFFFFFFF00000000ll},
221 {
"_allshl", &
TST_allshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 33, 0xFFFFFFFE00000000ll},
222 {
"_allshl", &
TST_allshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 0, 0xFFFFFFFFFFFFFFFFll},
224 {
"_allshr", &
TST_allshr, 0xAAAAAAAA55555555ll, 0ll, 63, 0xFFFFFFFFFFFFFFFFll},
226 {
"_allshr", &
TST_allshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 1, 0xFFFFFFFFFFFFFFFFll},
227 {
"_allshr", &
TST_allshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 32, 0xFFFFFFFFFFFFFFFFll},
228 {
"_allshr", &
TST_allshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 33, 0xFFFFFFFFFFFFFFFFll},
229 {
"_allshr", &
TST_allshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 0, 0xFFFFFFFFFFFFFFFFll},
231 {
"_allshr", &
TST_allshr, 0x5F5F5F5F5F5F5F5Fll, 0ll, 1, 0x2FAFAFAFAFAFAFAFll},
232 {
"_allshr", &
TST_allshr, 0x5F5F5F5F5F5F5F5Fll, 0ll, 32, 0x000000005F5F5F5Fll},
233 {
"_allshr", &
TST_allshr, 0x5F5F5F5F5F5F5F5Fll, 0ll, 33, 0x000000002FAFAFAFll},
236 {
"_aullshl", &
TST_aullshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 1, 0xFFFFFFFFFFFFFFFEll},
237 {
"_aullshl", &
TST_aullshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 32, 0xFFFFFFFF00000000ll},
238 {
"_aullshl", &
TST_aullshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 33, 0xFFFFFFFE00000000ll},
239 {
"_aullshl", &
TST_aullshl, 0xFFFFFFFFFFFFFFFFll, 0ll, 0, 0xFFFFFFFFFFFFFFFFll},
242 {
"_aullshr", &
TST_aullshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 1, 0x7FFFFFFFFFFFFFFFll},
243 {
"_aullshr", &
TST_aullshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 32, 0x00000000FFFFFFFFll},
244 {
"_aullshr", &
TST_aullshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 33, 0x000000007FFFFFFFll},
245 {
"_aullshr", &
TST_aullshr, 0xFFFFFFFFFFFFFFFFll, 0ll, 0, 0xFFFFFFFFFFFFFFFFll},
247 {
"_allmul", &
TST_allmul, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000000ll, 0, 0x0000000000000000ll},
248 {
"_allmul", &
TST_allmul, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
249 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x000000000FFFFFFFll},
250 {
"_allmul", &
TST_allmul, 0x0000000000000001ll, 0x000000000FFFFFFFll, 0, 0x000000000FFFFFFFll},
251 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000000000010ll, 0, 0x00000000FFFFFFF0ll},
252 {
"_allmul", &
TST_allmul, 0x0000000000000010ll, 0x000000000FFFFFFFll, 0, 0x00000000FFFFFFF0ll},
253 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000000000100ll, 0, 0x0000000FFFFFFF00ll},
254 {
"_allmul", &
TST_allmul, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000FFFFFFF00ll},
255 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000010000000ll, 0, 0x00FFFFFFF0000000ll},
256 {
"_allmul", &
TST_allmul, 0x0000000010000000ll, 0x000000000FFFFFFFll, 0, 0x00FFFFFFF0000000ll},
257 {
"_allmul", &
TST_allmul, 0x000000000FFFFFFFll, 0x0000000080000000ll, 0, 0x07FFFFFF80000000ll},
258 {
"_allmul", &
TST_allmul, 0x0000000080000000ll, 0x000000000FFFFFFFll, 0, 0x07FFFFFF80000000ll},
259 {
"_allmul", &
TST_allmul, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0xFFFFFFFF00000000ll},
260 {
"_allmul", &
TST_allmul, 0x0000000080000000ll, 0xFFFFFFFFFFFFFFFEll, 0, 0xFFFFFFFF00000000ll},
261 {
"_allmul", &
TST_allmul, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000008ll, 0, 0xFFFFFFFEFFFFFFF0ll},
262 {
"_allmul", &
TST_allmul, 0x0000000080000008ll, 0xFFFFFFFFFFFFFFFEll, 0, 0xFFFFFFFEFFFFFFF0ll},
263 {
"_allmul", &
TST_allmul, 0x00000000FFFFFFFFll, 0x00000000FFFFFFFFll, 0, 0xFFFFFFFE00000001ll},
265 {
"_alldiv", &
TST_alldiv, 0x0000000000000000ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
266 {
"_alldiv", &
TST_alldiv, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
267 {
"_alldiv", &
TST_alldiv, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0xFFFFFFFFFFFFFFFFll},
268 {
"_alldiv", &
TST_alldiv, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000001ll, 0, 0xFFFFFFFFFFFFFFFFll},
269 {
"_alldiv", &
TST_alldiv, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0xFFFFFFFFFFFFFFFFll},
270 {
"_alldiv", &
TST_alldiv, 0x0000000000000001ll, 0x0000000000000001ll, 0, 0x0000000000000001ll},
271 {
"_alldiv", &
TST_alldiv, 0xFFFFFFFFFFFFFFFFll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000001ll},
272 {
"_alldiv", &
TST_alldiv, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x000000000FFFFFFFll},
273 {
"_alldiv", &
TST_alldiv, 0x0000000FFFFFFFFFll, 0x0000000000000010ll, 0, 0x00000000FFFFFFFFll},
274 {
"_alldiv", &
TST_alldiv, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000000000000ll},
275 {
"_alldiv", &
TST_alldiv, 0x00FFFFFFF0000000ll, 0x0000000010000000ll, 0, 0x000000000FFFFFFFll},
276 {
"_alldiv", &
TST_alldiv, 0x07FFFFFF80000000ll, 0x0000000080000000ll, 0, 0x000000000FFFFFFFll},
277 {
"_alldiv", &
TST_alldiv, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0x0000000000000000ll},
278 {
"_alldiv", &
TST_alldiv, 0xFFFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000080000008ll},
279 {
"_alldiv", &
TST_alldiv, 0x7FFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0xC000000080000008ll},
280 {
"_alldiv", &
TST_alldiv, 0x7FFFFFFEFFFFFFF0ll, 0x0000FFFFFFFFFFFEll, 0, 0x0000000000007FFFll},
281 {
"_alldiv", &
TST_alldiv, 0x7FFFFFFEFFFFFFF0ll, 0x7FFFFFFEFFFFFFF0ll, 0, 0x0000000000000001ll},
283 {
"_allrem", &
TST_allrem, 0x0000000000000000ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
284 {
"_allrem", &
TST_allrem, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
285 {
"_allrem", &
TST_allrem, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
286 {
"_allrem", &
TST_allrem, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
287 {
"_allrem", &
TST_allrem, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
288 {
"_allrem", &
TST_allrem, 0x0000000000000001ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
289 {
"_allrem", &
TST_allrem, 0xFFFFFFFFFFFFFFFFll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
290 {
"_allrem", &
TST_allrem, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
291 {
"_allrem", &
TST_allrem, 0x0000000FFFFFFFFFll, 0x0000000000000010ll, 0, 0x000000000000000Fll},
292 {
"_allrem", &
TST_allrem, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000000000100ll},
293 {
"_allrem", &
TST_allrem, 0x00FFFFFFF0000000ll, 0x0000000010000000ll, 0, 0x0000000000000000ll},
294 {
"_allrem", &
TST_allrem, 0x07FFFFFF80000000ll, 0x0000000080000000ll, 0, 0x0000000000000000ll},
295 {
"_allrem", &
TST_allrem, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0xFFFFFFFFFFFFFFFEll},
296 {
"_allrem", &
TST_allrem, 0xFFFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000000000000ll},
297 {
"_allrem", &
TST_allrem, 0x7FFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000000000000ll},
298 {
"_allrem", &
TST_allrem, 0x7FFFFFFEFFFFFFF0ll, 0x0000FFFFFFFFFFFEll, 0, 0x0000FFFF0000FFEEll},
299 {
"_allrem", &
TST_allrem, 0x7FFFFFFEFFFFFFF0ll, 0x7FFFFFFEFFFFFFF0ll, 0, 0x0000000000000000ll},
302 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000000ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
303 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
304 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
305 {
"_ualldiv", &
TST_ualldiv, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000001ll, 0, 0xFFFFFFFFFFFFFFFFll},
306 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
307 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000001ll, 0x0000000000000001ll, 0, 0x0000000000000001ll},
308 {
"_ualldiv", &
TST_ualldiv, 0xFFFFFFFFFFFFFFFFll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000001ll},
309 {
"_ualldiv", &
TST_ualldiv, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x000000000FFFFFFFll},
310 {
"_ualldiv", &
TST_ualldiv, 0x0000000FFFFFFFFFll, 0x0000000000000010ll, 0, 0x00000000FFFFFFFFll},
311 {
"_ualldiv", &
TST_ualldiv, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000000000000ll},
312 {
"_ualldiv", &
TST_ualldiv, 0x00FFFFFFF0000000ll, 0x0000000010000000ll, 0, 0x000000000FFFFFFFll},
313 {
"_ualldiv", &
TST_ualldiv, 0x07FFFFFF80000000ll, 0x0000000080000000ll, 0, 0x000000000FFFFFFFll},
314 {
"_ualldiv", &
TST_ualldiv, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0x00000001FFFFFFFFll},
315 {
"_ualldiv", &
TST_ualldiv, 0xFFFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000000000000ll},
316 {
"_ualldiv", &
TST_ualldiv, 0x7FFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x0000000000000000ll},
317 {
"_ualldiv", &
TST_ualldiv, 0x7FFFFFFEFFFFFFF0ll, 0x0000FFFFFFFFFFFEll, 0, 0x0000000000007FFFll},
318 {
"_ualldiv", &
TST_ualldiv, 0x7FFFFFFEFFFFFFF0ll, 0x7FFFFFFEFFFFFFF0ll, 0, 0x0000000000000001ll},
320 {
"_uallrem", &
TST_uallrem, 0x0000000000000000ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
321 {
"_uallrem", &
TST_uallrem, 0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
322 {
"_uallrem", &
TST_uallrem, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000001ll},
323 {
"_uallrem", &
TST_uallrem, 0xFFFFFFFFFFFFFFFFll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
324 {
"_uallrem", &
TST_uallrem, 0x0000000000000001ll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000001ll},
325 {
"_uallrem", &
TST_uallrem, 0x0000000000000001ll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
326 {
"_uallrem", &
TST_uallrem, 0xFFFFFFFFFFFFFFFFll, 0xFFFFFFFFFFFFFFFFll, 0, 0x0000000000000000ll},
327 {
"_uallrem", &
TST_uallrem, 0x000000000FFFFFFFll, 0x0000000000000001ll, 0, 0x0000000000000000ll},
328 {
"_uallrem", &
TST_uallrem, 0x0000000FFFFFFFFFll, 0x0000000000000010ll, 0, 0x000000000000000Fll},
329 {
"_uallrem", &
TST_uallrem, 0x0000000000000100ll, 0x000000000FFFFFFFll, 0, 0x0000000000000100ll},
330 {
"_uallrem", &
TST_uallrem, 0x00FFFFFFF0000000ll, 0x0000000010000000ll, 0, 0x0000000000000000ll},
331 {
"_uallrem", &
TST_uallrem, 0x07FFFFFF80000000ll, 0x0000000080000000ll, 0, 0x0000000000000000ll},
332 {
"_uallrem", &
TST_uallrem, 0xFFFFFFFFFFFFFFFEll, 0x0000000080000000ll, 0, 0x000000007FFFFFFEll},
333 {
"_uallrem", &
TST_uallrem, 0xFFFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0xFFFFFFFEFFFFFFF0ll},
334 {
"_uallrem", &
TST_uallrem, 0x7FFFFFFEFFFFFFF0ll, 0xFFFFFFFFFFFFFFFEll, 0, 0x7FFFFFFEFFFFFFF0ll},
335 {
"_uallrem", &
TST_uallrem, 0x7FFFFFFEFFFFFFF0ll, 0x0000FFFFFFFFFFFEll, 0, 0x0000FFFF0000FFEEll},
336 {
"_uallrem", &
TST_uallrem, 0x7FFFFFFEFFFFFFF0ll, 0x7FFFFFFEFFFFFFF0ll, 0, 0x0000000000000000ll},
348 unsigned long long result = 0;
349 unsigned int *al = (
unsigned int *)&t->
a;
350 unsigned int *bl = (
unsigned int *)&t->
b;
352 unsigned int *rl = (
unsigned int *)&
result;
356 SDL_Log(
"%s(0x%08X%08X, 0x%08X%08X, %3d, produced: 0x%08X%08X, expected: 0x%08X%08X\n",
357 t->
operation, al[1], al[0], bl[1], bl[0], t->
arg, rl[1], rl[0], el[1], el[0]);
361 if (verbose && (failed == 0))
362 SDL_Log(
"All 64bit instrinsic tests passed\n");
363 return (failed ? 1 : 0);
408 SDL_Log(
"'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n",
427 if (argv[1] && (
SDL_strcmp(argv[1],
"-q") == 0)) {
const struct SDL_AssertData * next
#define SDL_MAX_SINT64
A signed 64-bit integer type.
GLuint GLfloat GLfloat GLfloat x1
#define SDL_MAX_UINT32
An unsigned 32-bit integer type.
#define SDL_MAX_SINT32
A signed 32-bit integer type.
#define SDL_MAX_UINT8
An unsigned 8-bit integer type.
#define SDL_GetAssertionReport
unsigned long long expected_result
unsigned int trigger_count
SDL_FORCE_INLINE Uint32 SDL_Swap32(Uint32 x)
#define SDL_assert_paranoid(condition)
#define SDL_MAX_UINT64
An unsigned 64-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
#define SDL_MAX_SINT16
A signed 16-bit integer type.
#define SDL_MAX_UINT16
An unsigned 16-bit integer type.
SDL_FORCE_INLINE Uint64 SDL_Swap64(Uint64 x)
#define SDL_MAX_SINT8
A signed 8-bit integer type.
GLboolean GLboolean GLboolean GLboolean a
#define SDL_assert_release(condition)
GLboolean GLboolean GLboolean b
#define SDL_COMPILE_TIME_ASSERT(name, x)