Mercurial > hg > CbC > old > device
diff test/code-gen.c @ 274:3ae68af07fce
MIPS code-gen-all passed.
PowerPC register dassop, preinc, postinc fix.
author | kono |
---|---|
date | Fri, 21 May 2004 05:29:53 +0900 |
parents | 87b9cfc86a10 |
children | 8f09f8bbc494 |
line wrap: on
line diff
--- a/test/code-gen.c Fri May 21 00:57:27 2004 +0900 +++ b/test/code-gen.c Fri May 21 05:29:53 2004 +0900 @@ -564,6 +564,26 @@ printf("code_rindirect %d %d %u %u\n",*pi1,*pi2,*pui1,*pui2); } +void +code_assign_register() +{ + int i1,i2; + unsigned int ui1,ui2; + register int *pi1,*pi2; + register unsigned int *pui1,*pui2; + + i1 = -555; i2= 555; + ui1 = 632423423; ui2= 32394234; + pi1 = &i1; + pi2 = &i2; + pui1 = &ui1; + pui2 = &ui2; + + *(pi2+i1+i2) = 3; + *(pui2+i1+i2) = 3; + printf("code_rindirect %d %d %u %u\n",*pi1,*pi2,*pui1,*pui2); +} + // code_register_assop(int e2,int op,int byte) void code_register_assop() @@ -760,7 +780,6 @@ } - // tosop(int op,int oreg) void tosop() @@ -866,6 +885,111 @@ } +// tosop(int op,int oreg) +void +register_tosop() +{ + register int i1,i2,i; + register unsigned int u1,u2,u; + i1 = -555; i2= 555; + u1 = 632423423; u2= 32394234; + + i = i1 + i2; + printf("tosop r 1 %d\n",i); + i = i1 - i2; + printf("tosop r 2 %d\n",i); + i = i1 / i2; + printf("tosop r 3 %d\n",i); + i = i1 * i2; + printf("tosop r 4 %d\n",i); + i = i1 | i2; + printf("tosop r 5 %d\n",i); + i = i1 & i2; + printf("tosop r 6 %d\n",i); + i = i1 ^ i2; + printf("tosop r 7 %d\n",i); + i = i1 << i2; + printf("tosop r 8 %d\n",i); + i = i1 >> i2; + printf("tosop r 9 %d\n",i); + i = i1 % i2; + printf("tosop r 10 %d\n",i); + + u = u1 + u2; + printf("tosop r 1 %u\n",u); + u = u1 - u2; + printf("tosop r 2 %u\n",u); + u = u1 / u2; + printf("tosop r 3 %u\n",u); + u = u1 * u2; + printf("tosop r 4 %u\n",u); + u = u1 | u2; + printf("tosop r 5 %u\n",u); + u = u1 & u2; + printf("tosop r 6 %u\n",u); + u = u1 ^ u2; + printf("tosop r 7 %u\n",u); + u = u1 << u2; + printf("tosop r 8 %u\n",u); + u = u1 >> u2; + printf("tosop r 9 %u\n",u); + u = u1 % u2; + printf("tosop r 10 %u\n",u); +} + +// oprtc(int op,int v) +void +register_oprtc() +{ + register int i1,i; + register unsigned int u1,u; + i1 = -555; + u1 = 632423423; + + i = i1 + 3; + printf("oprtc r 1 %d\n",i); + i = i1 - 3; + printf("oprtc r 2 %d\n",i); + i = i1 / 3; + printf("oprtc r 3 %d\n",i); + i = i1 * 3; + printf("oprtc r 4 %d\n",i); + i = i1 | 234234234; + printf("oprtc r 5 %d\n",i); + i = i1 & 23234234; + printf("oprtc r 6 %d\n",i); + i = i1 ^ 23234234; + printf("oprtc r 7 %d\n",i); + i = i1 << 5; + printf("oprtc r 8 %d\n",i); + i = i1 >> 5; + printf("oprtc r 9 %d\n",i); + i = i1 % 5; + printf("oprtc r 10 %d\n",i); + + u = u1 + 3; + printf("oprtc r 1 %u\n",u); + u = u1 - 3; + printf("oprtc r 2 %u\n",u); + u = u1 / 3; + printf("oprtc r 3 %u\n",u); + u = u1 * 3; + printf("oprtc r 4 %u\n",u); + u = u1 | 234234234; + printf("oprtc r 5 %u\n",u); + u = u1 & 234234234; + printf("oprtc r 6 %u\n",u); + u = u1 ^ 234234234; + printf("oprtc r 7 %u\n",u); + u = u1 << 5; + printf("oprtc r 8 %u\n",u); + u = u1 >> 5; + printf("oprtc r 9 %u\n",u); + u = u1 % 5; + printf("oprtc r 10 %u\n",u); +} + + #if FLOAT_CODE // code_cmp_dregister(int e2,int d) void @@ -918,6 +1042,28 @@ printf("code_dassign %g %g %g %g\n",*pi1,*pi2,*pui1,*pui2); } +void +code_register_dassign() +{ + int i1,i2; + float f1,f2; + double ui1,ui2; + register float *pi1,*pi2; + register double *pui1,*pui2; + + i1 = -555; i2= 555; + f1 = -555; f2= 555; + ui1 = 632423423; ui2= 32394234; + pi1 = &f1; + pi2 = &f2; + pui1 = &ui1; + pui2 = &ui2; + + *(pi2+i1+i2) = 3; + *(pui2+i1+i2) = 3; + printf("code_dassign %g %g %g %g\n",*pi1,*pi2,*pui1,*pui2); +} + // code_dconst(int e2,int freg,int d) // code_dneg(int freg,int d) // code_dneg(int creg) @@ -1097,6 +1243,34 @@ } +// dtosop(int op,int e1) +void +dtosop_register() +{ + register double i1,i2,i; + register float u1,u2,u; + i1 = -555; i2= 555; + u1 = 632423423; u2= 32394234; + + i = i1 + i2; + printf("dtosop 1 %g\n",i); + i = i1 - i2; + printf("dtosop 2 %g\n",i); + i = i1 / i2; + printf("dtosop 3 %g\n",i); + i = i1 * i2; + printf("dtosop 4 %g\n",i); + u = u1 + u2; + printf("dtosop 1 %g\n",u); + u = u1 - u2; + printf("dtosop 2 %g\n",u); + u = u1 / u2; + printf("dtosop 3 %g\n",u); + u = u1 * u2; + printf("dtosop 4 %g\n",u); +} + + // code_dassop(int op,int d) void code_dassop() @@ -1116,13 +1290,13 @@ printf("code_dassop 4 %g\n",i1); ui1 += 3; - printf("code_dassop 1 %g\n",ui1); + printf("code_dassop f 1 %g\n",ui1); ui1 -= 3; - printf("code_dassop 2 %g\n",ui1); + printf("code_dassop f 2 %g\n",ui1); ui1 /= 3; - printf("code_dassop 3 %g\n",ui1); + printf("code_dassop f 3 %g\n",ui1); ui1 *= 3; - printf("code_dassop 4 %g\n",ui1); + printf("code_dassop f 4 %g\n",ui1); } // code_dassop(int op,int d) @@ -1144,13 +1318,13 @@ printf("code_dassop r 4 %g\n",i1); ui1 += 3; - printf("code_dassop r 1 %g\n",ui1); + printf("code_dassop f r 1 %g\n",ui1); ui1 -= 3; - printf("code_dassop r 2 %g\n",ui1); + printf("code_dassop f r 2 %g\n",ui1); ui1 /= 3; - printf("code_dassop r 3 %g\n",ui1); + printf("code_dassop f r 3 %g\n",ui1); ui1 *= 3; - printf("code_dassop r 4 %g\n",ui1); + printf("code_dassop f r 4 %g\n",ui1); } @@ -1174,10 +1348,10 @@ { double i,j; float ui,uj; - i = 123123123;j = 0; + i = 123123;j = 0; printf("code_dpostinc d %g %g",i--,j--); printf(" %g %g\n",i,j); - ui = 123123123;uj = 0; + ui = 123123;uj = 0; printf("code_dpostinc f %g %g",ui++,uj--); printf(" %g %g\n",ui,uj); } @@ -1188,10 +1362,10 @@ { register double i,j; register float ui,uj; - i = 123123123;j = 0; + i = 123123;j = 0; printf("code_dpreinc r d %g %g",++i,--j); printf(" %g %g\n",i,j); - ui = 123123123;uj = 0; + ui = 123123;uj = 0; printf("code_dpreinc r f %g %g",++ui,--uj); printf(" %g %g\n",ui,uj); } @@ -1202,10 +1376,10 @@ { register double i,j; register float ui,uj; - i = 123123123;j = 0; + i = 123123;j = 0; printf("code_dpostinc r d %g %g",i--,j--); printf(" %g %g\n",i,j); - ui = 123123123;uj = 0; + ui = 123123;uj = 0; printf("code_dpostinc r f %g %g",ui++,uj--); printf(" %g %g\n",ui,uj); } @@ -1380,6 +1554,26 @@ printf("code_rindirect %lld %lld %llu %llu\n",*pi1,*pi2,*pui1,*pui2); } +void +code_lassign_register() +{ + long long i1,i2; + unsigned long long ui1,ui2; + register long long *pi1,*pi2; + register unsigned long long *pui1,*pui2; + + i1 = -555; i2= 555; + ui1 = 632423423; ui2= 32394234; + pi1 = &i1; + pi2 = &i2; + pui1 = &ui1; + pui2 = &ui2; + + *(pi2+i1+i2) = 3; + *(pui2+i1+i2) = 3; + printf("code_rindirect %lld %lld %llu %llu\n",*pi1,*pi2,*pui1,*pui2); +} + // code_lconst(int e1,int e2) // code_lneg(int e1,int e2) void @@ -1575,6 +1769,158 @@ } +// ltosop(int e1,int e2) +void +ltosop_register() +{ + register long long i1,i2,i; + register unsigned long long u1,u2,u; + register int ii2; + register unsigned int uu2; + i1 = -555; i2= 555; + u1 = 632423423; u2= 32394234; + ii2 = -33; + uu2 = 33; + u = 0; + + i = i1 + i2; + printf("ltosop r 1 %lld\n",i); + i = i1 - i2; + printf("ltosop r 2 %lld\n",i); + i = i1 / i2; + printf("ltosop r 3 %lld\n",i); + i = i1 * i2; + printf("ltosop r 4 %lld\n",i); + i = i1 | i2; + printf("ltosop r 5 %lld\n",i); + i = i1 & i2; + printf("ltosop r 6 %lld\n",i); + i = i1 ^ i2; + printf("ltosop r 7 %lld\n",i); + i = i1 << i2; + printf("ltosop r 8 %lld\n",i); + i = i1 >> i2; + printf("ltosop r 9 %lld\n",i); + i = i1 % i2; + printf("ltosop r 10 %lld\n",i); + + u = u1 + u2; + printf("ltosop r u 1 %llu\n",u); + u = u1 - u2; + printf("ltosop r u 2 %llu\n",u); + u = u1 / u2; + printf("ltosop r u 3 %llu\n",u); + u = u1 * u2; + printf("ltosop r u 4 %llu\n",u); + u = u1 | u2; + printf("ltosop r u 5 %llu\n",u); + u = u1 & u2; + printf("ltosop r u 6 %llu\n",u); + u = u1 ^ u2; + printf("ltosop r u 7 %llu\n",u); + u = u1 << u2; + printf("ltosop r u 8 %llu\n",u); + u = u1 >> u2; + printf("ltosop r u 9 %llu\n",u); + u = u1 % u2; + printf("ltosop r u 10 %llu\n",u); + + i = i1 + ii2; + printf("litosop r 1 %lld\n",i); + i = i1 - ii2; + printf("litosop r 2 %lld\n",i); + i = i1 / ii2; + printf("litosop r 3 %lld\n",i); + i = i1 * ii2; + printf("litosop r 4 %lld\n",i); + i = i1 | ii2; + printf("litosop r 5 %lld\n",i); + i = i1 & ii2; + printf("litosop r 6 %lld\n",i); + i = i1 ^ ii2; + printf("litosop r 7 %lld\n",i); + i = i1 << ii2; + printf("litosop r 8 %lld\n",i); + i = i1 >> ii2; + printf("litosop r 9 %lld\n",i); + i = i1 % ii2; + printf("litosop r 10 %lld\n",i); + + u = u1 + uu2; + printf("litosop r u 1 %llu\n",u); + u = u1 - uu2; + printf("litosop r u 2 %llu\n",u); + u = u1 / uu2; + printf("litosop r u 3 %llu\n",u); + u = u1 * uu2; + printf("litosop r u 4 %llu\n",u); + u = u1 | uu2; + printf("litosop r u 5 %llu\n",u); + u = u1 & uu2; + printf("litosop r u 6 %llu\n",u); + u = u1 ^ uu2; + printf("litosop r u 7 %llu\n",u); + u = u1 << uu2; + printf("litosop r u 8 %llu\n",u); + u = u1 >> uu2; + printf("litosop r u 9 %llu\n",u); + u = u1 % uu2; + printf("litosop r u 10 %llu\n",u); +} + +// loprtc(int op,int v) +void +loprtc_register() +{ + register long long i1,i; + register unsigned long long u1,u; + i1 = -555; + u1 = 632423423; + + i = i1 + 3; + printf("loprtc r 1 %lld\n",i); + i = i1 - 3; + printf("loprtc r 2 %lld\n",i); + i = i1 / 32323423423LL; + printf("loprtc r 3 %lld\n",i); + i = i1 * 323423423423LL; + printf("loprtc r 4 %lld\n",i); + i = i1 | 234234234; + printf("loprtc r 5 %lld\n",i); + i = i1 & 23234234; + printf("loprtc r 6 %lld\n",i); + i = i1 ^ 23234234; + printf("loprtc r 7 %lld\n",i); + i = i1 << 5; + printf("loprtc r 8 %lld\n",i); + i = i1 >> 5; + printf("loprtc r 9 %lld\n",i); + i = i1 % 5; + printf("loprtc r 10 %lld\n",i); + + u = u1 + 3; + printf("loprtc r 1 u %llu\n",u); + u = u1 - 3; + printf("loprtc r 2 u %llu\n",u); + u = u1 / 32342342344234LL; + printf("loprtc r 3 u %llu\n",u); + u = u1 * 243234234232324LL; + printf("loprtc r 4 u %llu\n",u); + u = u1 | 234234234; + printf("loprtc r 5 u %llu\n",u); + u = u1 & 234234234; + printf("loprtc r 6 u %llu\n",u); + u = u1 ^ 234234234; + printf("loprtc r 7 u %llu\n",u); + u = u1 << 5; + printf("loprtc r 8 u %llu\n",u); + u = u1 >> 5; + printf("loprtc r 9 u %llu\n",u); + u = u1 % 5; + printf("loprtc r 10 u %llu\n",u); +} + + // code_i2ll(int creg) void code_i2ll()