From: Matthias Braun Date: Sat, 15 Sep 2007 13:06:42 +0000 (+0000) Subject: extend am testapps to short and char types X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=6d941be300ab62219586f11169f72a4c4a4c4f81;p=libfirm extend am testapps to short and char types [r15813] --- diff --git a/ir/be/test/am_test.c b/ir/be/test/am_test.c index 08ac1cec5..d90210e35 100644 --- a/ir/be/test/am_test.c +++ b/ir/be/test/am_test.c @@ -1,15 +1,22 @@ /*$ -fno-inline $*/ +#include + int val; -#define T(name,OP) \ - int test_##name(void) { return val OP 7; } \ - int test2_##name(int v) { return val OP v; } \ - int testp_##name(void) { return 7 OP val; } \ - int testp2_##name(int v) { return v OP val; } +#define TTYPE(name,type,OP) \ + type test_##name##type(void) { return val OP 7; } \ + type test2_##name##type(type v) { return val OP v; } \ + type testp_##name##type(void) { return 7 OP val; } \ + type testp2_##name##type(type v) { return v OP val; } int test_cmp_testset(int v, int v2) { return (v & 14) > 0; } +#define T(name,OP) \ + TTYPE(name,int,OP) \ + TTYPE(name,short,OP) \ + TTYPE(name,char,OP) + T(add,+) T(sub,-) T(or,|) @@ -20,20 +27,26 @@ T(shl,<<) T(shr,>>) #undef T +#undef TTYPE int main(void) { int res1, res2, res3, res4; val = 11; -#define T(name,OP) \ - res1 = test_##name(); \ - res2 = test2_##name(20); \ - res3 = testp_##name(); \ - res4 = testp2_##name(20); \ - printf("Test %s: %d (should be %d)\n", #name, res1, 11 OP 7); \ - printf("Test2 %s: %d (should be %d)\n", #name, res2, 11 OP 20); \ - printf("Testp %s: %d (should be %d)\n", #name, res3, 7 OP 11); \ - printf("Testp2 %s: %d (should be %d)\n", #name, res4, 20 OP 11); +#define TTYPE(name,type,OP) \ + res1 = test_##name##type(); \ + res2 = test2_##name##type(20); \ + res3 = testp_##name##type(); \ + res4 = testp2_##name##type(20); \ + printf("Test %s: %d (should be %d)\n", #name, res1, (type) 11 OP (type) 7); \ + printf("Test2 %s: %d (should be %d)\n", #name, res2, (type) 11 OP (type)20); \ + printf("Testp %s: %d (should be %d)\n", #name, res3, (type) 7 OP (type)11); \ + printf("Testp2 %s: %d (should be %d)\n", #name, res4, (type) 20 OP (type)11); + +#define T(name,OP) \ + TTYPE(name,int,OP) \ + TTYPE(name,short,OP) \ + TTYPE(name,char,OP) T(add,+) T(sub,-) diff --git a/ir/be/test/am_test4.c b/ir/be/test/am_test4.c index 97d4e63c0..03eb9cd31 100644 --- a/ir/be/test/am_test4.c +++ b/ir/be/test/am_test4.c @@ -1,3 +1,5 @@ +#include + char c; int f(int x, int y) { @@ -16,8 +18,8 @@ char f4(char *p, int k) { return p[k]; } -#define T(name, OP, OP2) \ -void dest_am_##name(int *arr, int from, int to) { \ +#define TTYPE(name, type, OP, OP2) \ +void dest_am_##name##type(type *arr, int from, int to) { \ int i; \ \ for(i = from; i < to; ++i) { \ @@ -25,6 +27,11 @@ void dest_am_##name(int *arr, int from, int to) { \ } \ } +#define T(name, OP, OP2) \ + TTYPE(name,int,OP,OP2) \ + TTYPE(name,short,OP,OP2) \ + TTYPE(name,char,OP,OP2) + T(neg, -,) T(not, ~,) T(add, 3 +,) @@ -38,15 +45,23 @@ T(shl, , << 3) T(shr, , >> 3) int main(void) { - int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + int arrint[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + short arrshort[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + char arrchar[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + int i; -#define C(name) dest_am_##name(arr, 0, 10); \ +#define CTYPE(type,name) dest_am_##name##type(arr##type, 0, 10); \ for(i = 0; i < 10; ++i) { \ - printf("%d ", arr[i]); \ + printf("%d ", arr##type[i]); \ } \ printf("\n"); +#define C(name) \ + CTYPE(int,name) \ + CTYPE(short,name) \ + CTYPE(char,name) + C(neg); C(not); C(add);