fpc/compiler/mips
sergei cd27d64cd5 + Support (as target-independent as possible) optimization of division by constants:
The code generator gets two new methods, a_mul_reg_reg_pair and g_div_const_reg_reg. The first one is basically 32x32 to 64 bits multiplication (or any other size, with result having twice the size of arguments), which must be implemented for every target. The second one actually does the job, its default implementation taken from powerpc64 and is sufficiently good for all three-address targets.

+ Enabled optimized division for MIPS target, target-specific changes are under 30 lines.

git-svn-id: trunk@27904 -
2014-06-08 22:50:24 +00:00
..
aasmcpu.pas * MIPS: emit PIC-friendly instruction sequences instead of "J" when fixing up branches outside of 128K range. Resolves #25399. 2013-12-11 10:56:07 +00:00
aoptcpu.pas + MIPS peephole optimizer: eliminate redundant moves of floating point registers. 2013-11-25 13:57:19 +00:00
aoptcpub.pas * Patch from Fuxin Zhang: other mips and mipsel CPUs changes 2012-06-07 23:20:06 +00:00
aoptcpud.pas
cgcpu.pas + Support (as target-independent as possible) optimization of division by constants: 2014-06-08 22:50:24 +00:00
cpubase.pas Implement support for saving and restoring address registers. 2013-10-05 21:43:42 +00:00
cpuelf.pas + MIPS internal linker: support TLS IE/LE and GPREL32 relocations, is now able to link tw14265. 2013-07-29 09:30:40 +00:00
cpugas.pas * partially merged the mips-embedded branch of Michael Ring: 2014-03-19 21:25:38 +00:00
cpuinfo.pas * MIPS: re-enable peephole optimizations which got disabled by r27106 and were not restored in r27147. Unfortunately such things are hard to detect reliably in automated way. 2014-06-04 22:34:46 +00:00
cpunode.pas + support overriding tdef/tsym methods with target-specific functionality: 2014-03-29 22:31:55 +00:00
cpupara.pas * MIPS: floating point parameters on stack should be loaded to/from FPU registers directly, without using temp. 2013-07-17 11:00:46 +00:00
cpupi.pas * Moved fixup_jmps to target-specific classes for powerpc,powerpc64 and MIPS, cleaned out remaining $ifdef's. A slight functionality change is that fixup_jmps is now called before adding the procedure end symbol, not after, but that should not matter. 2014-04-02 14:17:23 +00:00
cputarg.pas * partially merged the mips-embedded branch of Michael Ring: 2014-03-19 21:25:38 +00:00
hlcgcpu.pas * partially merged the mips-embedded branch of Michael Ring: 2014-03-19 21:25:38 +00:00
itcpugas.pas * fix fpu register type 2012-02-05 09:14:55 +00:00
mipsreg.dat Change std reg names to allow use with GAS assembler 2012-07-04 16:24:11 +00:00
ncpuadd.pas * completed thlcgobj.location_force_fpureg(), use it everywhere and removed 2014-03-10 09:01:05 +00:00
ncpucall.pas * MIPS: clean up 2014-03-04 08:42:45 +00:00
ncpucnv.pas * MIPS: when converting int to real, use a floating point constant directly, instead of emulating it with integers. tai_real_64bit already handles all endian issues. 2013-10-26 18:12:25 +00:00
ncpuinln.pas * completed thlcgobj.location_force_fpureg(), use it everywhere and removed 2014-03-10 09:01:05 +00:00
ncpuld.pas - Removed tcgloadnode.generate_picvaraccess, it is never used and is not necessary because PIC stuff is handled at lower levels. 2013-06-02 10:49:17 +00:00
ncpumat.pas + Support (as target-independent as possible) optimization of division by constants: 2014-06-08 22:50:24 +00:00
ncpuset.pas * MIPS and SPARC: determine whether case expression is in range using a single unsigned comparison (like it is done on other targets). 2014-03-10 23:02:05 +00:00
opcode.inc * partially merged the mips-embedded branch of Michael Ring: 2014-03-19 21:25:38 +00:00
racpugas.pas * MIPS: cleanup assembler reader, MIPS references allow only a single register in parentheses. 2013-10-13 21:22:04 +00:00
rgcpu.pas + MIPS: prevent coalescing written-to registers with $sp,$fp,$zero and $at. 2013-06-15 04:04:08 +00:00
rmipscon.inc * fixes several register allocation related mips issues 2012-02-05 21:58:45 +00:00
rmipsdwf.inc
rmipsgas.inc * fix floating point registers gas name 2012-02-06 20:33:12 +00:00
rmipsgri.inc * fix floating point registers gas name 2012-02-06 20:33:12 +00:00
rmipsgss.inc
rmipsnor.inc
rmipsnum.inc * fixes several register allocation related mips issues 2012-02-05 21:58:45 +00:00
rmipsrni.inc
rmipssri.inc Change std reg names to allow use with GAS assembler 2012-07-04 16:24:11 +00:00
rmipssta.inc
rmipsstd.inc Change std reg names to allow use with GAS assembler 2012-07-04 16:24:11 +00:00
rmipssup.inc * fixes several register allocation related mips issues 2012-02-05 21:58:45 +00:00
strinst.inc * partially merged the mips-embedded branch of Michael Ring: 2014-03-19 21:25:38 +00:00
symcpu.pas Fix a typo. The CPU specific version of "ttypesym" should be called "tcputypesym" and not "tcpuypesym". 2014-04-11 14:30:59 +00:00