comparison 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
comparison
equal deleted inserted replaced
273:87b9cfc86a10 274:3ae68af07fce
562 *(pi2+i1+i2) = 3; 562 *(pi2+i1+i2) = 3;
563 *(pui2+i1+i2) = 3; 563 *(pui2+i1+i2) = 3;
564 printf("code_rindirect %d %d %u %u\n",*pi1,*pi2,*pui1,*pui2); 564 printf("code_rindirect %d %d %u %u\n",*pi1,*pi2,*pui1,*pui2);
565 } 565 }
566 566
567 void
568 code_assign_register()
569 {
570 int i1,i2;
571 unsigned int ui1,ui2;
572 register int *pi1,*pi2;
573 register unsigned int *pui1,*pui2;
574
575 i1 = -555; i2= 555;
576 ui1 = 632423423; ui2= 32394234;
577 pi1 = &i1;
578 pi2 = &i2;
579 pui1 = &ui1;
580 pui2 = &ui2;
581
582 *(pi2+i1+i2) = 3;
583 *(pui2+i1+i2) = 3;
584 printf("code_rindirect %d %d %u %u\n",*pi1,*pi2,*pui1,*pui2);
585 }
586
567 // code_register_assop(int e2,int op,int byte) 587 // code_register_assop(int e2,int op,int byte)
568 void 588 void
569 code_register_assop() 589 code_register_assop()
570 { 590 {
571 register int i1; 591 register int i1;
756 ui1 <<= 3; 776 ui1 <<= 3;
757 printf("code_assop c 8 %u\n",ui1); 777 printf("code_assop c 8 %u\n",ui1);
758 ui1 >>= 3; 778 ui1 >>= 3;
759 printf("code_assop c 9 %u\n",ui1); 779 printf("code_assop c 9 %u\n",ui1);
760 } 780 }
761
762 781
763 782
764 // tosop(int op,int oreg) 783 // tosop(int op,int oreg)
765 void 784 void
766 tosop() 785 tosop()
864 u = u1 % 5; 883 u = u1 % 5;
865 printf("oprtc 10 %u\n",u); 884 printf("oprtc 10 %u\n",u);
866 } 885 }
867 886
868 887
888 // tosop(int op,int oreg)
889 void
890 register_tosop()
891 {
892 register int i1,i2,i;
893 register unsigned int u1,u2,u;
894 i1 = -555; i2= 555;
895 u1 = 632423423; u2= 32394234;
896
897 i = i1 + i2;
898 printf("tosop r 1 %d\n",i);
899 i = i1 - i2;
900 printf("tosop r 2 %d\n",i);
901 i = i1 / i2;
902 printf("tosop r 3 %d\n",i);
903 i = i1 * i2;
904 printf("tosop r 4 %d\n",i);
905 i = i1 | i2;
906 printf("tosop r 5 %d\n",i);
907 i = i1 & i2;
908 printf("tosop r 6 %d\n",i);
909 i = i1 ^ i2;
910 printf("tosop r 7 %d\n",i);
911 i = i1 << i2;
912 printf("tosop r 8 %d\n",i);
913 i = i1 >> i2;
914 printf("tosop r 9 %d\n",i);
915 i = i1 % i2;
916 printf("tosop r 10 %d\n",i);
917
918 u = u1 + u2;
919 printf("tosop r 1 %u\n",u);
920 u = u1 - u2;
921 printf("tosop r 2 %u\n",u);
922 u = u1 / u2;
923 printf("tosop r 3 %u\n",u);
924 u = u1 * u2;
925 printf("tosop r 4 %u\n",u);
926 u = u1 | u2;
927 printf("tosop r 5 %u\n",u);
928 u = u1 & u2;
929 printf("tosop r 6 %u\n",u);
930 u = u1 ^ u2;
931 printf("tosop r 7 %u\n",u);
932 u = u1 << u2;
933 printf("tosop r 8 %u\n",u);
934 u = u1 >> u2;
935 printf("tosop r 9 %u\n",u);
936 u = u1 % u2;
937 printf("tosop r 10 %u\n",u);
938 }
939
940 // oprtc(int op,int v)
941 void
942 register_oprtc()
943 {
944 register int i1,i;
945 register unsigned int u1,u;
946 i1 = -555;
947 u1 = 632423423;
948
949 i = i1 + 3;
950 printf("oprtc r 1 %d\n",i);
951 i = i1 - 3;
952 printf("oprtc r 2 %d\n",i);
953 i = i1 / 3;
954 printf("oprtc r 3 %d\n",i);
955 i = i1 * 3;
956 printf("oprtc r 4 %d\n",i);
957 i = i1 | 234234234;
958 printf("oprtc r 5 %d\n",i);
959 i = i1 & 23234234;
960 printf("oprtc r 6 %d\n",i);
961 i = i1 ^ 23234234;
962 printf("oprtc r 7 %d\n",i);
963 i = i1 << 5;
964 printf("oprtc r 8 %d\n",i);
965 i = i1 >> 5;
966 printf("oprtc r 9 %d\n",i);
967 i = i1 % 5;
968 printf("oprtc r 10 %d\n",i);
969
970 u = u1 + 3;
971 printf("oprtc r 1 %u\n",u);
972 u = u1 - 3;
973 printf("oprtc r 2 %u\n",u);
974 u = u1 / 3;
975 printf("oprtc r 3 %u\n",u);
976 u = u1 * 3;
977 printf("oprtc r 4 %u\n",u);
978 u = u1 | 234234234;
979 printf("oprtc r 5 %u\n",u);
980 u = u1 & 234234234;
981 printf("oprtc r 6 %u\n",u);
982 u = u1 ^ 234234234;
983 printf("oprtc r 7 %u\n",u);
984 u = u1 << 5;
985 printf("oprtc r 8 %u\n",u);
986 u = u1 >> 5;
987 printf("oprtc r 9 %u\n",u);
988 u = u1 % 5;
989 printf("oprtc r 10 %u\n",u);
990 }
991
992
869 #if FLOAT_CODE 993 #if FLOAT_CODE
870 // code_cmp_dregister(int e2,int d) 994 // code_cmp_dregister(int e2,int d)
871 void 995 void
872 code_cmp_dregister() 996 code_cmp_dregister()
873 { 997 {
902 int i1,i2; 1026 int i1,i2;
903 float f1,f2; 1027 float f1,f2;
904 double ui1,ui2; 1028 double ui1,ui2;
905 float *pi1,*pi2; 1029 float *pi1,*pi2;
906 double *pui1,*pui2; 1030 double *pui1,*pui2;
1031
1032 i1 = -555; i2= 555;
1033 f1 = -555; f2= 555;
1034 ui1 = 632423423; ui2= 32394234;
1035 pi1 = &f1;
1036 pi2 = &f2;
1037 pui1 = &ui1;
1038 pui2 = &ui2;
1039
1040 *(pi2+i1+i2) = 3;
1041 *(pui2+i1+i2) = 3;
1042 printf("code_dassign %g %g %g %g\n",*pi1,*pi2,*pui1,*pui2);
1043 }
1044
1045 void
1046 code_register_dassign()
1047 {
1048 int i1,i2;
1049 float f1,f2;
1050 double ui1,ui2;
1051 register float *pi1,*pi2;
1052 register double *pui1,*pui2;
907 1053
908 i1 = -555; i2= 555; 1054 i1 = -555; i2= 555;
909 f1 = -555; f2= 555; 1055 f1 = -555; f2= 555;
910 ui1 = 632423423; ui2= 32394234; 1056 ui1 = 632423423; ui2= 32394234;
911 pi1 = &f1; 1057 pi1 = &f1;
1095 u = u1 * u2; 1241 u = u1 * u2;
1096 printf("dtosop 4 %g\n",u); 1242 printf("dtosop 4 %g\n",u);
1097 } 1243 }
1098 1244
1099 1245
1246 // dtosop(int op,int e1)
1247 void
1248 dtosop_register()
1249 {
1250 register double i1,i2,i;
1251 register float u1,u2,u;
1252 i1 = -555; i2= 555;
1253 u1 = 632423423; u2= 32394234;
1254
1255 i = i1 + i2;
1256 printf("dtosop 1 %g\n",i);
1257 i = i1 - i2;
1258 printf("dtosop 2 %g\n",i);
1259 i = i1 / i2;
1260 printf("dtosop 3 %g\n",i);
1261 i = i1 * i2;
1262 printf("dtosop 4 %g\n",i);
1263 u = u1 + u2;
1264 printf("dtosop 1 %g\n",u);
1265 u = u1 - u2;
1266 printf("dtosop 2 %g\n",u);
1267 u = u1 / u2;
1268 printf("dtosop 3 %g\n",u);
1269 u = u1 * u2;
1270 printf("dtosop 4 %g\n",u);
1271 }
1272
1273
1100 // code_dassop(int op,int d) 1274 // code_dassop(int op,int d)
1101 void 1275 void
1102 code_dassop() 1276 code_dassop()
1103 { 1277 {
1104 double i1,i2; 1278 double i1,i2;
1114 printf("code_dassop 3 %g\n",i1); 1288 printf("code_dassop 3 %g\n",i1);
1115 i1 *= 3; 1289 i1 *= 3;
1116 printf("code_dassop 4 %g\n",i1); 1290 printf("code_dassop 4 %g\n",i1);
1117 1291
1118 ui1 += 3; 1292 ui1 += 3;
1119 printf("code_dassop 1 %g\n",ui1); 1293 printf("code_dassop f 1 %g\n",ui1);
1120 ui1 -= 3; 1294 ui1 -= 3;
1121 printf("code_dassop 2 %g\n",ui1); 1295 printf("code_dassop f 2 %g\n",ui1);
1122 ui1 /= 3; 1296 ui1 /= 3;
1123 printf("code_dassop 3 %g\n",ui1); 1297 printf("code_dassop f 3 %g\n",ui1);
1124 ui1 *= 3; 1298 ui1 *= 3;
1125 printf("code_dassop 4 %g\n",ui1); 1299 printf("code_dassop f 4 %g\n",ui1);
1126 } 1300 }
1127 1301
1128 // code_dassop(int op,int d) 1302 // code_dassop(int op,int d)
1129 void 1303 void
1130 code_register_dassop() 1304 code_register_dassop()
1142 printf("code_dassop r 3 %g\n",i1); 1316 printf("code_dassop r 3 %g\n",i1);
1143 i1 *= 3; 1317 i1 *= 3;
1144 printf("code_dassop r 4 %g\n",i1); 1318 printf("code_dassop r 4 %g\n",i1);
1145 1319
1146 ui1 += 3; 1320 ui1 += 3;
1147 printf("code_dassop r 1 %g\n",ui1); 1321 printf("code_dassop f r 1 %g\n",ui1);
1148 ui1 -= 3; 1322 ui1 -= 3;
1149 printf("code_dassop r 2 %g\n",ui1); 1323 printf("code_dassop f r 2 %g\n",ui1);
1150 ui1 /= 3; 1324 ui1 /= 3;
1151 printf("code_dassop r 3 %g\n",ui1); 1325 printf("code_dassop f r 3 %g\n",ui1);
1152 ui1 *= 3; 1326 ui1 *= 3;
1153 printf("code_dassop r 4 %g\n",ui1); 1327 printf("code_dassop f r 4 %g\n",ui1);
1154 } 1328 }
1155 1329
1156 1330
1157 // code_dpreinc(int e1,int e2,int d,int reg) 1331 // code_dpreinc(int e1,int e2,int d,int reg)
1158 void 1332 void
1172 void 1346 void
1173 code_dpostinc() 1347 code_dpostinc()
1174 { 1348 {
1175 double i,j; 1349 double i,j;
1176 float ui,uj; 1350 float ui,uj;
1177 i = 123123123;j = 0; 1351 i = 123123;j = 0;
1178 printf("code_dpostinc d %g %g",i--,j--); 1352 printf("code_dpostinc d %g %g",i--,j--);
1179 printf(" %g %g\n",i,j); 1353 printf(" %g %g\n",i,j);
1180 ui = 123123123;uj = 0; 1354 ui = 123123;uj = 0;
1181 printf("code_dpostinc f %g %g",ui++,uj--); 1355 printf("code_dpostinc f %g %g",ui++,uj--);
1182 printf(" %g %g\n",ui,uj); 1356 printf(" %g %g\n",ui,uj);
1183 } 1357 }
1184 1358
1185 // code_dpreinc(int e1,int e2,int d,int reg) 1359 // code_dpreinc(int e1,int e2,int d,int reg)
1186 void 1360 void
1187 code_register_dpreinc() 1361 code_register_dpreinc()
1188 { 1362 {
1189 register double i,j; 1363 register double i,j;
1190 register float ui,uj; 1364 register float ui,uj;
1191 i = 123123123;j = 0; 1365 i = 123123;j = 0;
1192 printf("code_dpreinc r d %g %g",++i,--j); 1366 printf("code_dpreinc r d %g %g",++i,--j);
1193 printf(" %g %g\n",i,j); 1367 printf(" %g %g\n",i,j);
1194 ui = 123123123;uj = 0; 1368 ui = 123123;uj = 0;
1195 printf("code_dpreinc r f %g %g",++ui,--uj); 1369 printf("code_dpreinc r f %g %g",++ui,--uj);
1196 printf(" %g %g\n",ui,uj); 1370 printf(" %g %g\n",ui,uj);
1197 } 1371 }
1198 1372
1199 // code_dpostinc(int e1,int e2,int d,int reg) 1373 // code_dpostinc(int e1,int e2,int d,int reg)
1200 void 1374 void
1201 code_register_dpostinc() 1375 code_register_dpostinc()
1202 { 1376 {
1203 register double i,j; 1377 register double i,j;
1204 register float ui,uj; 1378 register float ui,uj;
1205 i = 123123123;j = 0; 1379 i = 123123;j = 0;
1206 printf("code_dpostinc r d %g %g",i--,j--); 1380 printf("code_dpostinc r d %g %g",i--,j--);
1207 printf(" %g %g\n",i,j); 1381 printf(" %g %g\n",i,j);
1208 ui = 123123123;uj = 0; 1382 ui = 123123;uj = 0;
1209 printf("code_dpostinc r f %g %g",ui++,uj--); 1383 printf("code_dpostinc r f %g %g",ui++,uj--);
1210 printf(" %g %g\n",ui,uj); 1384 printf(" %g %g\n",ui,uj);
1211 } 1385 }
1212 1386
1213 // drexpr(int e1, int e2,int l1, int op) 1387 // drexpr(int e1, int e2,int l1, int op)
1365 { 1539 {
1366 long long i1,i2; 1540 long long i1,i2;
1367 unsigned long long ui1,ui2; 1541 unsigned long long ui1,ui2;
1368 long long *pi1,*pi2; 1542 long long *pi1,*pi2;
1369 unsigned long long *pui1,*pui2; 1543 unsigned long long *pui1,*pui2;
1544
1545 i1 = -555; i2= 555;
1546 ui1 = 632423423; ui2= 32394234;
1547 pi1 = &i1;
1548 pi2 = &i2;
1549 pui1 = &ui1;
1550 pui2 = &ui2;
1551
1552 *(pi2+i1+i2) = 3;
1553 *(pui2+i1+i2) = 3;
1554 printf("code_rindirect %lld %lld %llu %llu\n",*pi1,*pi2,*pui1,*pui2);
1555 }
1556
1557 void
1558 code_lassign_register()
1559 {
1560 long long i1,i2;
1561 unsigned long long ui1,ui2;
1562 register long long *pi1,*pi2;
1563 register unsigned long long *pui1,*pui2;
1370 1564
1371 i1 = -555; i2= 555; 1565 i1 = -555; i2= 555;
1372 ui1 = 632423423; ui2= 32394234; 1566 ui1 = 632423423; ui2= 32394234;
1373 pi1 = &i1; 1567 pi1 = &i1;
1374 pi2 = &i2; 1568 pi2 = &i2;
1573 u = u1 % 5; 1767 u = u1 % 5;
1574 printf("loprtc 10 u %llu\n",u); 1768 printf("loprtc 10 u %llu\n",u);
1575 } 1769 }
1576 1770
1577 1771
1772 // ltosop(int e1,int e2)
1773 void
1774 ltosop_register()
1775 {
1776 register long long i1,i2,i;
1777 register unsigned long long u1,u2,u;
1778 register int ii2;
1779 register unsigned int uu2;
1780 i1 = -555; i2= 555;
1781 u1 = 632423423; u2= 32394234;
1782 ii2 = -33;
1783 uu2 = 33;
1784 u = 0;
1785
1786 i = i1 + i2;
1787 printf("ltosop r 1 %lld\n",i);
1788 i = i1 - i2;
1789 printf("ltosop r 2 %lld\n",i);
1790 i = i1 / i2;
1791 printf("ltosop r 3 %lld\n",i);
1792 i = i1 * i2;
1793 printf("ltosop r 4 %lld\n",i);
1794 i = i1 | i2;
1795 printf("ltosop r 5 %lld\n",i);
1796 i = i1 & i2;
1797 printf("ltosop r 6 %lld\n",i);
1798 i = i1 ^ i2;
1799 printf("ltosop r 7 %lld\n",i);
1800 i = i1 << i2;
1801 printf("ltosop r 8 %lld\n",i);
1802 i = i1 >> i2;
1803 printf("ltosop r 9 %lld\n",i);
1804 i = i1 % i2;
1805 printf("ltosop r 10 %lld\n",i);
1806
1807 u = u1 + u2;
1808 printf("ltosop r u 1 %llu\n",u);
1809 u = u1 - u2;
1810 printf("ltosop r u 2 %llu\n",u);
1811 u = u1 / u2;
1812 printf("ltosop r u 3 %llu\n",u);
1813 u = u1 * u2;
1814 printf("ltosop r u 4 %llu\n",u);
1815 u = u1 | u2;
1816 printf("ltosop r u 5 %llu\n",u);
1817 u = u1 & u2;
1818 printf("ltosop r u 6 %llu\n",u);
1819 u = u1 ^ u2;
1820 printf("ltosop r u 7 %llu\n",u);
1821 u = u1 << u2;
1822 printf("ltosop r u 8 %llu\n",u);
1823 u = u1 >> u2;
1824 printf("ltosop r u 9 %llu\n",u);
1825 u = u1 % u2;
1826 printf("ltosop r u 10 %llu\n",u);
1827
1828 i = i1 + ii2;
1829 printf("litosop r 1 %lld\n",i);
1830 i = i1 - ii2;
1831 printf("litosop r 2 %lld\n",i);
1832 i = i1 / ii2;
1833 printf("litosop r 3 %lld\n",i);
1834 i = i1 * ii2;
1835 printf("litosop r 4 %lld\n",i);
1836 i = i1 | ii2;
1837 printf("litosop r 5 %lld\n",i);
1838 i = i1 & ii2;
1839 printf("litosop r 6 %lld\n",i);
1840 i = i1 ^ ii2;
1841 printf("litosop r 7 %lld\n",i);
1842 i = i1 << ii2;
1843 printf("litosop r 8 %lld\n",i);
1844 i = i1 >> ii2;
1845 printf("litosop r 9 %lld\n",i);
1846 i = i1 % ii2;
1847 printf("litosop r 10 %lld\n",i);
1848
1849 u = u1 + uu2;
1850 printf("litosop r u 1 %llu\n",u);
1851 u = u1 - uu2;
1852 printf("litosop r u 2 %llu\n",u);
1853 u = u1 / uu2;
1854 printf("litosop r u 3 %llu\n",u);
1855 u = u1 * uu2;
1856 printf("litosop r u 4 %llu\n",u);
1857 u = u1 | uu2;
1858 printf("litosop r u 5 %llu\n",u);
1859 u = u1 & uu2;
1860 printf("litosop r u 6 %llu\n",u);
1861 u = u1 ^ uu2;
1862 printf("litosop r u 7 %llu\n",u);
1863 u = u1 << uu2;
1864 printf("litosop r u 8 %llu\n",u);
1865 u = u1 >> uu2;
1866 printf("litosop r u 9 %llu\n",u);
1867 u = u1 % uu2;
1868 printf("litosop r u 10 %llu\n",u);
1869 }
1870
1871 // loprtc(int op,int v)
1872 void
1873 loprtc_register()
1874 {
1875 register long long i1,i;
1876 register unsigned long long u1,u;
1877 i1 = -555;
1878 u1 = 632423423;
1879
1880 i = i1 + 3;
1881 printf("loprtc r 1 %lld\n",i);
1882 i = i1 - 3;
1883 printf("loprtc r 2 %lld\n",i);
1884 i = i1 / 32323423423LL;
1885 printf("loprtc r 3 %lld\n",i);
1886 i = i1 * 323423423423LL;
1887 printf("loprtc r 4 %lld\n",i);
1888 i = i1 | 234234234;
1889 printf("loprtc r 5 %lld\n",i);
1890 i = i1 & 23234234;
1891 printf("loprtc r 6 %lld\n",i);
1892 i = i1 ^ 23234234;
1893 printf("loprtc r 7 %lld\n",i);
1894 i = i1 << 5;
1895 printf("loprtc r 8 %lld\n",i);
1896 i = i1 >> 5;
1897 printf("loprtc r 9 %lld\n",i);
1898 i = i1 % 5;
1899 printf("loprtc r 10 %lld\n",i);
1900
1901 u = u1 + 3;
1902 printf("loprtc r 1 u %llu\n",u);
1903 u = u1 - 3;
1904 printf("loprtc r 2 u %llu\n",u);
1905 u = u1 / 32342342344234LL;
1906 printf("loprtc r 3 u %llu\n",u);
1907 u = u1 * 243234234232324LL;
1908 printf("loprtc r 4 u %llu\n",u);
1909 u = u1 | 234234234;
1910 printf("loprtc r 5 u %llu\n",u);
1911 u = u1 & 234234234;
1912 printf("loprtc r 6 u %llu\n",u);
1913 u = u1 ^ 234234234;
1914 printf("loprtc r 7 u %llu\n",u);
1915 u = u1 << 5;
1916 printf("loprtc r 8 u %llu\n",u);
1917 u = u1 >> 5;
1918 printf("loprtc r 9 u %llu\n",u);
1919 u = u1 % 5;
1920 printf("loprtc r 10 u %llu\n",u);
1921 }
1922
1923
1578 // code_i2ll(int creg) 1924 // code_i2ll(int creg)
1579 void 1925 void
1580 code_i2ll() 1926 code_i2ll()
1581 { 1927 {
1582 long long d; 1928 long long d;