Add ARM aeabi functions needed to run tcctest
Add implementation for float / integer conversion functions: __aeabi_d2lz, __aeabi_d2ulz, __aeabi_f2lz, __aeabi_f2ulz, __aeabi_l2d, __aeabi_l2f, __aeabi_ul2d, __aeabi_ul2f Add implementation for long long helper functions: __aeabi_ldivmod, __aeabi_uldivmod, __aeabi_llsl, __aeabi_llsr, __aeabi_lasr Add implementation for integer division functions: __aeabi_uidiv, __aeabi_uidivmod, __aeabi_idiv, __aeabi_idivmod,
This commit is contained in:
@ -59,6 +59,7 @@
|
||||
|
||||
#include "tcclib.h"
|
||||
|
||||
void intdiv_test();
|
||||
void string_test();
|
||||
void expr_test();
|
||||
void macro_test();
|
||||
@ -167,6 +168,71 @@ int qq(int x)
|
||||
#define wq_spin_lock spin_lock
|
||||
#define TEST2() wq_spin_lock(a)
|
||||
|
||||
#define UINT_MAX ((unsigned) -1)
|
||||
|
||||
void intdiv_test(void)
|
||||
{
|
||||
printf("18/21=%u\n", 18/21);
|
||||
printf("18%21=%u\n", 18%21);
|
||||
printf("41/21=%u\n", 41/21);
|
||||
printf("41%21=%u\n", 41%21);
|
||||
printf("42/21=%u\n", 42/21);
|
||||
printf("42%21=%u\n", 42%21);
|
||||
printf("43/21=%u\n", 43/21);
|
||||
printf("43%21=%u\n", 43%21);
|
||||
printf("126/21=%u\n", 126/21);
|
||||
printf("12%/21=%u\n", 126%21);
|
||||
printf("131/21=%u\n", 131/21);
|
||||
printf("131%21=%u\n", 131%21);
|
||||
printf("(UINT_MAX/2+3)/2=%u\n", (UINT_MAX/2+3)/2);
|
||||
printf("(UINT_MAX/2+3)%2=%u\n", (UINT_MAX/2+3)%2);
|
||||
|
||||
printf("18/-21=%u\n", 18/-21);
|
||||
printf("18%-21=%u\n", 18%-21);
|
||||
printf("41/-21=%u\n", 41/-21);
|
||||
printf("41%-21=%u\n", 41%-21);
|
||||
printf("42/-21=%u\n", 42/-21);
|
||||
printf("42%-21=%u\n", 42%-21);
|
||||
printf("43/-21=%u\n", 43/-21);
|
||||
printf("43%-21=%u\n", 43%-21);
|
||||
printf("126/-21=%u\n", 126/-21);
|
||||
printf("12%/-21=%u\n", 126%-21);
|
||||
printf("131/-21=%u\n", 131/-21);
|
||||
printf("131%-21=%u\n", 131%-21);
|
||||
printf("(UINT_MAX/2+3)/-2=%u\n", (UINT_MAX/2+3)/-2);
|
||||
printf("(UINT_MAX/2+3)%-2=%u\n", (UINT_MAX/2+3)%-2);
|
||||
|
||||
printf("-18/21=%u\n", -18/21);
|
||||
printf("-18%21=%u\n", -18%21);
|
||||
printf("-41/21=%u\n", -41/21);
|
||||
printf("-41%21=%u\n", -41%21);
|
||||
printf("-42/21=%u\n", -42/21);
|
||||
printf("-42%21=%u\n", -42%21);
|
||||
printf("-43/21=%u\n", -43/21);
|
||||
printf("-43%21=%u\n", -43%21);
|
||||
printf("-126/21=%u\n", -126/21);
|
||||
printf("-12%/21=%u\n", -126%21);
|
||||
printf("-131/21=%u\n", -131/21);
|
||||
printf("-131%21=%u\n", -131%21);
|
||||
printf("-(UINT_MAX/2+3)/2=%u\n", (0-(UINT_MAX/2+3))/2);
|
||||
printf("-(UINT_MAX/2+3)%2=%u\n", (0-(UINT_MAX/2+3))%2);
|
||||
|
||||
printf("-18/-21=%u\n", -18/-21);
|
||||
printf("-18%-21=%u\n", -18%-21);
|
||||
printf("-41/-21=%u\n", -41/-21);
|
||||
printf("-41%-21=%u\n", -41%-21);
|
||||
printf("-42/-21=%u\n", -42/-21);
|
||||
printf("-42%-21=%u\n", -42%-21);
|
||||
printf("-43/-21=%u\n", -43/-21);
|
||||
printf("-43%-21=%u\n", -43%-21);
|
||||
printf("-126/-21=%u\n", -126/-21);
|
||||
printf("-12%/-21=%u\n", -126%-21);
|
||||
printf("-131/-21=%u\n", -131/-21);
|
||||
printf("-131%-21=%u\n", -131%-21);
|
||||
printf("-(UINT_MAX/2+3)/-2=%u\n", (0-(UINT_MAX/2+3))/-2);
|
||||
printf("-(UINT_MAX/2+3)%-2=%u\n", (0-(UINT_MAX/2+3))%-2);
|
||||
}
|
||||
|
||||
void macro_test(void)
|
||||
{
|
||||
printf("macro:\n");
|
||||
@ -619,6 +685,7 @@ int main(int argc, char **argv)
|
||||
math_cmp_test();
|
||||
callsave_test();
|
||||
builtin_frame_address_test();
|
||||
intdiv_test();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user