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()