Commit Graph

396 Commits

Author SHA1 Message Date
Károly Balogh
0045f34322 tabs to spaces and indentation fix, no functional changes
git-svn-id: trunk@27950 -
2014-06-14 09:09:53 +00:00
Károly Balogh
7963351440 m68k: removed comment generation line accidentally left in from the previous commit
git-svn-id: trunk@27936 -
2014-06-11 22:42:26 +00:00
Károly Balogh
ed3ce4087a m68k: try to generate a bit smaller code in g_adjust_self; also changed two JMPs to S_NO from S_L, because JMP is unsized anyway
git-svn-id: trunk@27935 -
2014-06-11 22:33:09 +00:00
Károly Balogh
1b11541c90 m68k: simplification and cleanup of g_proc_entry. the generated code shouldn't change
git-svn-id: trunk@27922 -
2014-06-10 09:15:26 +00:00
Károly Balogh
17657ca11d m68k: more minor reference usage tweaking, hopefully fixes Mantis 26286
git-svn-id: trunk@27880 -
2014-06-06 16:41:40 +00:00
Károly Balogh
381cf72023 m68k: minor bits, addq/subq works also on address regs, remove reference validity check in a_op_const_ref because we have fixref() later anyway
git-svn-id: trunk@27876 -
2014-06-06 15:15:03 +00:00
Károly Balogh
df7af34de9 m68k: very early optimizer implementation experiments
git-svn-id: trunk@27862 -
2014-06-06 07:38:50 +00:00
Károly Balogh
0fe656e82d m68k: simplified code generated by g_concatcopy and cleaned up the old mess from the code
git-svn-id: trunk@27859 -
2014-06-05 12:42:36 +00:00
Károly Balogh
f3bbad26c3 m68k: use MOVEA without size to load values to address regs. use a_op_const_reg in a_op_const_ref for smarter const loading when necessary
git-svn-id: trunk@27828 -
2014-05-30 05:29:22 +00:00
Károly Balogh
2936335f68 removed silly ancient writeln debug from me...
git-svn-id: trunk@27821 -
2014-05-28 18:36:58 +00:00
Károly Balogh
28323135f8 m68k: minor optimizations to g_proc_exit() - use LEA for stackpointer math which is better than ADDing large constants, also only modify the SP reg once
git-svn-id: trunk@27817 -
2014-05-25 01:34:00 +00:00
Károly Balogh
633eeb79ed m68k/ra68kmot.pas: fixed a pointer to signed int cast warning, so it now compiles with warnings on
git-svn-id: trunk@27735 -
2014-05-04 22:22:03 +00:00
Károly Balogh
3b787b7187 m68k/ra68k.pas: fixed some multi level comment warnings, so it now compiles with warnings on
git-svn-id: trunk@27734 -
2014-05-04 22:21:24 +00:00
Károly Balogh
94d1a04422 m68k/cpuasm.pas was an empty and unused file since the first SVN commit. other platforms also doesn't have such file, so removed.
git-svn-id: trunk@27733 -
2014-05-04 21:51:15 +00:00
Károly Balogh
daefb42925 m68k: don't find helper 'opcodes' as real opcodes... (i guess is the right solution for the problem which r22796 originally aimed to fix)
git-svn-id: trunk@27577 -
2014-04-13 23:20:29 +00:00
Károly Balogh
9ad7540ddf reverted change in r22796, the previously disabled code is actually required by the amunits package
git-svn-id: trunk@27574 -
2014-04-13 22:06:51 +00:00
Károly Balogh
5535df29d4 support SP and FP alias in the assembler reader too
git-svn-id: trunk@27573 -
2014-04-13 21:03:06 +00:00
Károly Balogh
7ee09b9620 instead of supporting SP only, have register A7 defined, and have SP as an alias
git-svn-id: trunk@27572 -
2014-04-13 21:02:16 +00:00
svenbarth
02495c17bd Fix a typo. The CPU specific version of "ttypesym" should be called "tcputypesym" and not "tcpuypesym".
git-svn-id: trunk@27531 -
2014-04-11 14:30:59 +00:00
sergei
5c48804240 * Moved local label infrastructure into tasmreader, reduces number of global vars. Functionality is not changed.
git-svn-id: trunk@27477 -
2014-04-05 09:43:13 +00:00
Jonas Maebe
edff5a9aa1 * fixed m68k typo in r27438
git-svn-id: trunk@27443 -
2014-04-01 21:48:28 +00:00
Jonas Maebe
d452686c39 * moved pbestrealtype from symdef to symcpu
git-svn-id: trunk@27441 -
2014-04-01 21:41:37 +00:00
Jonas Maebe
9c7c64a3af * moved amiga/morphos-specific libsym-related field from tprocdef to
cpu-specific descendants (unfortunately causes some duplication, but the
    code is trivial and there is no easy way to avoid it)
  * also moved the use of the field in ncal to cpu-specific files (with same
    caveat)

git-svn-id: trunk@27438 -
2014-04-01 21:41:27 +00:00
Jonas Maebe
dae5d1ff62 + added class reference types of the architecture-specific t*def/t*sym
classes

git-svn-id: trunk@27396 -
2014-03-30 21:04:32 +00:00
Jonas Maebe
b57c95043f + support overriding tdef/tsym methods with target-specific functionality:
o made all (non-abstract) tdef and tsym constructors virtual
   o added c*def/c*sym classref types for every (non-abstract) t*def/t*sym
     class
   o added cpusym unit for every architecture that derives a tcpu*def/tcpu*sym
     class from the base classes, and initialises the c*def/c*sym classes with
     them. This is done so that the llvm target will be able to derive from
     the tcpu*def/sym classes without umpteen ifdefs, and it also means that
     the WPO can devirtualise everything because the c* variables are only
     initialised with one class type
   o replaced all t*def/t*sym constructor calls with c*def/c*sym constructor
     calls

git-svn-id: trunk@27361 -
2014-03-29 22:31:55 +00:00
Károly Balogh
3b9e2a620b added a remark about a possible QEMU issue with CMP/CMPI .W and .B on ColdFire
git-svn-id: trunk@27291 -
2014-03-26 17:08:16 +00:00
Károly Balogh
1af6d17b4d don't enforce BPL length, use SUBQ in g_concatcopy
git-svn-id: trunk@27290 -
2014-03-26 15:43:25 +00:00
Károly Balogh
9ae38cdc1c back to more conservative sign extension. this really needs separate handling for ColdFire and normal 68k, because the CF executes 32bit arithmetics only while normal 68k will do any size happily.
git-svn-id: trunk@27289 -
2014-03-26 15:02:50 +00:00
Károly Balogh
7093efe4c4 fixed comment, no functional changes
git-svn-id: trunk@27266 -
2014-03-24 16:53:29 +00:00
Károly Balogh
ed56f3c9b1 disable the new n68kmem node for now, it needs more fixing
git-svn-id: trunk@27123 -
2014-03-13 02:08:15 +00:00
Károly Balogh
bca09a8f69 reverted parts of r27117 because it caused regressions
git-svn-id: trunk@27118 -
2014-03-12 19:22:04 +00:00
Károly Balogh
c7d1cef334 support sign/zero extension to subreg sizes, not just always to 32bit
git-svn-id: trunk@27117 -
2014-03-12 18:27:50 +00:00
Károly Balogh
73db4db6f8 use the whole reg for return values
git-svn-id: trunk@27116 -
2014-03-12 18:22:04 +00:00
Károly Balogh
552ab2938e avoid some unnecessary sign extensions
git-svn-id: trunk@27111 -
2014-03-12 04:16:52 +00:00
Károly Balogh
48ceebafb1 n68kmem node for better utilization of 68k specialities in addressing
git-svn-id: trunk@27110 -
2014-03-12 02:36:40 +00:00
Károly Balogh
3a464dbdcf don't swap the base and index registers if we have a scalefactor
git-svn-id: trunk@27109 -
2014-03-12 02:34:30 +00:00
Károly Balogh
7b05113322 addressing improvements: fixref can swap base/index registers if better fits 68k pattern, less need to move around registers. also fix reference in a_op_const_ref.
git-svn-id: trunk@27108 -
2014-03-12 01:32:44 +00:00
Károly Balogh
01febdd7f3 plain 68000 also doesn't support 123(dX)
git-svn-id: trunk@27098 -
2014-03-11 20:47:37 +00:00
Károly Balogh
a82a3ec38e let the assembler decide about the size of the Bcc and BRA instructions, this makes code generated here work on a 68000 (and probably a lot smaller in size, no more forced 32bit displacements)
git-svn-id: trunk@27084 -
2014-03-10 18:50:05 +00:00
Károly Balogh
6bd062b59f according to the M68K PRM and also GNU AS, plain 68000 has no BRA.L
git-svn-id: trunk@27083 -
2014-03-10 18:36:10 +00:00
Károly Balogh
1e65caa37a fixed the 68020 codepath for emit_div/mod
git-svn-id: trunk@27081 -
2014-03-10 18:01:53 +00:00
Károly Balogh
73f8c956e0 don't save the FP explicitly on a syscall, as they preserve all regs anyway except scratch regs
git-svn-id: trunk@27078 -
2014-03-10 13:39:51 +00:00
Jonas Maebe
4065483a50 * completed thlcgobj.location_force_fpureg(), use it everywhere and removed
ncgutil/thlcg2ll.location_force_fpureg()

git-svn-id: trunk@27071 -
2014-03-10 09:01:05 +00:00
Károly Balogh
875a7418b3 disable broken 68020 codepath and fall back to generic until it gets fixed
git-svn-id: trunk@27070 -
2014-03-10 01:36:05 +00:00
Károly Balogh
9ec1d4ee89 fixed spilling operation type for some ColdFire instructions
git-svn-id: trunk@27064 -
2014-03-09 23:04:28 +00:00
Károly Balogh
13210ff7d4 use MVZ/MVS ColdFire instructions to load constants where applicable
git-svn-id: trunk@26935 -
2014-03-03 00:53:52 +00:00
Károly Balogh
1d5f74fae0 m68k implementation of g_save_registers and g_restore_registers using movem.l
git-svn-id: trunk@26923 -
2014-03-02 14:58:05 +00:00
Károly Balogh
8730b1bf45 cleaned up g_proc_exit, optimized generated code and also added some comments about possible ABI variations. the changes also fix two tests on my system related to cdecl procedures
git-svn-id: trunk@26918 -
2014-03-01 23:52:00 +00:00
Károly Balogh
bd4cc3b8f3 cleaned up, reindented, simplified and allowed some minor optimizations in tcg64f68k
git-svn-id: trunk@26914 -
2014-03-01 18:25:05 +00:00
svenbarth
2a65c05a8c Clean up dead code.
m68k/n68kcnv.pas:
  - pass_generate_code is used from the parent class
  - ungetcpuregister is not needed here

git-svn-id: trunk@26848 -
2014-02-22 21:29:31 +00:00