From: <gb...@di...> - 2000-09-24 11:14:56
|
Hi, > we should probably do: > if(srcreg != dstreg) m68k_areg(regs, srcreg) += 16;\r\n"); > m68k_areg(regs, dstreg) += 16;\r\n"); OK, I added your patch plus other MOVE16 instructions in the table68k. For that purpose, I added "Al" meaning absolute long. I also enhanced the table68k for better (I hope) flag usage information and control flow information (an extra field). Some optimizations can still be made for MOVE16 instructions by using do_put/do_get mem functions instead of put/get functions and thus avoiding the double byteswapping of the data. But as we are not in a critical point yet, I left those as is ;-) The MOVE16 instructions in the new table68k look like: 1111 0110 0010 0rrr:40:-----:-----:--:12: MOVE16 ArP,ARP 1111 0110 00ss sSSS:40:-----:-----:--:12: MOVE16 s[Dreg-Aipi],Al 1111 0110 00dd dDDD:40:-----:-----:--:12: MOVE16 Al,d[Areg-Aipi] 1111 0110 00ss sSSS:40:-----:-----:--:12: MOVE16 s[Aind],Al 1111 0110 00dd dDDD:40:-----:-----:--:12: MOVE16 Al,d[Aipi-Aind] % EmulOp instructions 0111 0001 0000 0000:00:-----:-----:-R:00: EMULOP_RETURN 0111 0001 EEEE EEEE:00:-----:-----:--:10: EMULOP #E Since, I also temporarily disabled ARM, M68K, SPARC optimizations, I won't commit before tommorrow night. I deactivated those because optimized flag handling are now used under a common interface. i.e. optflag_test_*, optflag_add_*, as in the latest UAE sources. Bye. -- Gwenolé Beauchesne |