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
sergei
d29300df13
* tMIPSELnotnode.second_boolean: reuse common handle_locjump method.
...
git-svn-id: trunk@26735 -
2014-02-08 21:10:01 +00:00
sergei
e16e19b170
* MIPS: removed specific handling of 32-bit shifts, generic code does the job just well.
...
* Tweak 64-bit shifts to take advantage of 3-address instructions (i.e. don't operate on same register).
git-svn-id: trunk@26142 -
2013-11-27 11:33:52 +00:00
sergei
0bef197c84
* MIPS unary minus node: override the entire second_float method, not just emit_float_sign_change. Makes use of two-address neg.d/neg.s instructions, eliminating extra register moves.
...
git-svn-id: trunk@26135 -
2013-11-25 13:54:38 +00:00
sergei
f80ce76a69
+ MIPS: emulate "flags", i.e. support LOC_FLAGS location. This allows to generate differently optimized code for branching and for conversion to register, typically saving a register and instruction per compare.
...
git-svn-id: trunk@25131 -
2013-07-19 14:06:47 +00:00
sergei
faa778b6c7
* MIPS: div/mod and 32-bit shifts: don't bother reusing argument locations, always allocate new register and emit 3-address instructions.
...
* Fixed possible overwrite of LOC_CREGISTER numerator in optimized division by power of 2.
git-svn-id: trunk@25066 -
2013-07-08 11:51:39 +00:00
sergei
8823574fe2
* MIPS: get rid of DIV and DIVU macros.
...
git-svn-id: trunk@25030 -
2013-07-02 14:28:10 +00:00
sergei
1f8bd4a2d1
+ MIPS: initial target-specific unary minus node.
...
git-svn-id: trunk@24417 -
2013-05-04 07:19:08 +00:00
sergei
6e4f6a64d6
+ MIPS: Allow subset locations for boolean NOT, this appears sufficient to fix all bitpacking-related tests.
...
git-svn-id: trunk@23554 -
2013-01-31 21:52:29 +00:00
sergei
5e13334467
* Fixed tMIPSELtypeconvnode.second_int_to_bool handling of C booleans, webtbs/tw10233 and webtbs/tw17180 now work.
...
* Reused applicable code from the above mentioned method in tMIPSELnotnode.second_boolean, it is more efficient in handling 64-bit data.
git-svn-id: trunk@23531 -
2013-01-28 21:32:21 +00:00
sergei
d43c38633c
* Fixed tMIPSELnotnode.second_boolean do handle QWordBool type correctly and deal with difference between Pascal and C booleans. Also improved it to produce code without macros. Fixes webtbs/tw20874 (and maybe something else).
...
git-svn-id: trunk@23345 -
2013-01-08 17:43:33 +00:00
pierre
d01ec10f45
Fix tw22326 for mips CPU
...
git-svn-id: trunk@22451 -
2012-09-24 22:28:54 +00:00
pierre
93e0dd9c2f
* Patch from Fuxin Zhang: other mips and mipsel CPUs changes
...
git-svn-id: trunk@21538 -
2012-06-07 23:20:06 +00:00
Jonas Maebe
edd42aa42a
* moved subsetref/reg and bit_set/test support from cgobj to hlcgobj for
...
future use by high level code generator targets
o this in turn required that all a_load*_loc* methods are called via
hlcg rather than via cg, since a location can be a subsetref/reg and
and those are no longer handled in tcg
o that then required moving several force_location_* routines into
thlcg because they use a_load_loc*, but did not take tdef size
parameters (which are required by the thlcg a_load_loc* routines)
o the only practical consequence is that from now on, you have to
use hlcg.location_force_mem/reg() (fpureg not yet) and
hlcg.gen_load_loc_cgpara() instead of the removed versions from ncgutil,
and hlcg.a_load*loc*() instead of cg.a_load*loc* if a subsetref/reg
might be involved
git-svn-id: trunk@21287 -
2012-05-13 12:33:10 +00:00
florian
f54365db94
* adapted more fpc-mips stuff to trunk
...
git-svn-id: trunk@14230 -
2009-11-20 21:13:53 +00:00