Commit Graph

104 Commits

Author SHA1 Message Date
Jonas Maebe
e815b923d5 * a_loadfpu_* gets two size parameters: fromsize and tosize
* fixed downsizing the precision of floating point values
  * floating point constants are now treated using only the minimal
    precision required (e.g. 2.0 is now a single, 1.1 extended etc)
    (Delphi compatible)

git-svn-id: trunk@5927 -
2007-01-12 18:33:51 +00:00
tom_at_work
7ab5fc7980 - cleanup, fixed range check error in cgcpu
git-svn-id: trunk@5501 -
2006-11-26 21:35:57 +00:00
Jonas Maebe
469ac311e0 * fixed r5214
git-svn-id: trunk@5222 -
2006-11-04 16:44:29 +00:00
Jonas Maebe
66cf666f65 * optimized storing constants into subsetreg/refs (a packed array of
boolean can now be as efficient as a set of boolean -- and it is
    on ppc32/64)

git-svn-id: trunk@5214 -
2006-11-03 22:00:27 +00:00
Jonas Maebe
9acc38e82a * moved some more common powerpc32/64 things to ppcgn
+ a few initial darwin/ppc64 things

git-svn-id: trunk@5197 -
2006-11-03 12:30:17 +00:00
peter
658c46b903 * remove tdictionary and tindexarray
* symtables based on TFPHashObjectList and TFPObjectList
  * rename torddef.typ to torddef.ordtype
  * rename tfloatdef.typ to tfloatdef.floattype
  * rename tdef.deftype to tdef.typ
  * remove obsolete browser code, browcol is kept so the ide
    can still be compiled

git-svn-id: trunk@5192 -
2006-11-03 00:30:30 +00:00
florian
85d63d9fa9 * settings refactored
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +00:00
tom_at_work
2b5e324638 * Fixed remaining bug in cg so that -O2 works again
git-svn-id: trunk@4974 -
2006-10-18 22:51:54 +00:00
Jonas Maebe
d4a818c8ae * support for subsets which are not a multiple of 8 bits
git-svn-id: trunk@4442 -
2006-08-19 11:11:37 +00:00
Jonas Maebe
d1bc93c67a * one more subsetreg fix
git-svn-id: trunk@4344 -
2006-08-04 08:37:21 +00:00
tom_at_work
d112bfbd43 * fixed a_load_subsetreg_reg according to Jonas' remarks
git-svn-id: trunk@4343 -
2006-08-03 21:27:39 +00:00
Jonas Maebe
c25aba7592 * cleaned up subsetreg support (put everything in a record)
* prepared support for elements with arbitrary bit length (as opposed
    to a multiple of 8)

git-svn-id: trunk@4324 -
2006-08-01 20:39:53 +00:00
tom_at_work
5622a7ae64 * fixed some bugs in a_param_ref due to missing begin/end block markers
git-svn-id: trunk@4224 -
2006-07-16 10:29:53 +00:00
tom_at_work
2adcae0cd8 * optimized register-register loading of < 64 bit values (removes superfluous code), similar to 3207 for ppc
* fixed fixref() which did not always treat addresses as 64 bit sizes, resulting in problems using above optimization
* cleanup
* removed assembly fpc_int_real again, has problems with border cases

git-svn-id: trunk@3795 -
2006-06-04 17:35:55 +00:00
tom_at_work
a24a329d1c * fixed record regvar code generation for ppc64 for now
git-svn-id: trunk@3787 -
2006-06-04 12:43:28 +00:00
tom_at_work
9a5885b8d2 * small optimizations for the subsetreg functions
git-svn-id: trunk@3763 -
2006-06-01 20:57:54 +00:00
tom_at_work
129fe92d9e * fixed subregister loading and storing for ppc64
git-svn-id: trunk@3751 -
2006-05-30 21:57:48 +00:00
Jonas Maebe
6335ce6e45 - reverted previous wrong commit
git-svn-id: trunk@3743 -
2006-05-30 07:37:09 +00:00
Jonas Maebe
b784b2f39e * fixed a_load_subsetreg_reg for loading signed fields (EXTRDI results
in an unsigned number)

git-svn-id: trunk@3739 -
2006-05-29 20:26:06 +00:00
tom_at_work
dba5da67af * initial support for subregister loading (ppc64 specific part only)
+ added EXTRDI and INSRDI opcode
* lots of additional debug code when EXTDEBUG enabled

git-svn-id: trunk@3724 -
2006-05-28 21:02:25 +00:00
tom_at_work
1bd43869d0 * reenabled generation of TOC labels for symbols with a length under a certain threshold (to avoid too long symbols passed to the cg which will get truncated)
* cleanup

git-svn-id: trunk@3674 -
2006-05-25 20:16:25 +00:00
tom_at_work
5240913a80 * cleaner allocation of scratch registers, removed unnecessary cg methods which emitted code using a fixed register
+ generation of lots of additional debug/trace messages with $EXTDEBUG
* code cleanup (intendation)

git-svn-id: trunk@3584 -
2006-05-19 21:27:44 +00:00
Jonas Maebe
a387be19a0 + a_call_ref for ppc32 and ppc64
git-svn-id: trunk@3392 -
2006-04-30 20:50:37 +00:00
tom_at_work
b46f7259ca * gprof profiling support
* some additional safety checks

git-svn-id: trunk@3290 -
2006-04-20 08:42:56 +00:00
tom_at_work
f31ede0b12 * fixed code generation after recent changes of int_cgsize()
* initial code generation for gprof

git-svn-id: trunk@3271 -
2006-04-18 10:27:11 +00:00
peter
0ec2921bbe * split newasmsymbol to refasmsymbol and defineasmsymbol
git-svn-id: trunk@3057 -
2006-03-27 11:45:18 +00:00
peter
b7fe6797bf Merged revisions 2921-2922,2925 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines

  * pass ObjectWriter to ObjectOuput

........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines

  * refactor asmdata

........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines

  * add cfi to asmdata
  * move asmlist, asmcfi, asmdata to own unit

........

git-svn-id: trunk@2932 -
2006-03-16 08:52:22 +00:00
tom_at_work
6d9829da14 * fixed compilation
git-svn-id: trunk@2919 -
2006-03-14 20:30:31 +00:00
peter
b6e35a200e * rewrite of optimizer options
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
tom_at_work
b309574e22 * fixed code generation for -Og switch
* copied createtempparaloc() method from i386 parameter manager to avoid copying for larger value parameters (see 2692)
* do not copy memory if references are equal in g_concatcopy()
* do not emit some strings used for debugging into assembly file in g_concatcopy by default anymore
* simplification of boolean expression in calc_stackframe_size()

git-svn-id: trunk@2694 -
2006-02-26 17:30:49 +00:00
tom_at_work
99cbf815eb * constant loading does not force usage of R12 anymore, fixing tests when regalloc is tight on registers (uses R0 again)
git-svn-id: trunk@2625 -
2006-02-19 12:44:04 +00:00
tom_at_work
88ebc549a6 * some smartlinking fixes for ppc64
* disable generation of TOC entries for constants for now

git-svn-id: trunk@2548 -
2006-02-12 20:37:24 +00:00
tom_at_work
6e290373c8 * div by const now enabled with -O2 (not -O3)
* large integer constants (>2 instructions to load) are put into the TOC as well

git-svn-id: trunk@2233 -
2006-01-08 18:04:44 +00:00
tom_at_work
4e35206d33 * basic ppc64 PIC code support
git-svn-id: trunk@2223 -
2006-01-08 13:28:46 +00:00
tom_at_work
8c8e25353b * reverted changes from 2214, needs to be split into several commits
git-svn-id: trunk@2215 -
2006-01-08 01:03:15 +00:00
tom_at_work
6313a9be7b * basic code generation for dynamic linking code for ppc64
git-svn-id: trunk@2214 -
2006-01-07 22:16:33 +00:00
tom_at_work
3462426b1d * stack frame optimizations
git-svn-id: trunk@2172 -
2006-01-04 23:27:40 +00:00
tom_at_work
57b7b72ca4 * ppc64/linux specific compiler patches to improve C parameter passing compatibility
* passes tcalext3 and tcalext4 test programs

git-svn-id: trunk@1984 -
2005-12-18 22:08:13 +00:00
tom_at_work
651f34e27c * ppc64: with -Or the compiler now also generates calls to helper functions in the function prolog/epilog instead of multiple stores/loads
* ppc64: moved function prolog/epilog helper code into startup code
* ppc64: added FPU configuration code in math unit (fixes tw3161)

git-svn-id: trunk@1786 -
2005-11-20 01:20:55 +00:00
tom_at_work
93bb997d8f * ppc64/linux: enhanced varargs support (passes tprintf test now)
* ppc64/linux: some small tweak for small memory locations copy code

git-svn-id: trunk@1778 -
2005-11-17 21:35:01 +00:00
tom_at_work
d088695868 * ppc64: moved division by constant optimization from nppcmat to cgcpu unit
* ppc64: cg now also replaces multiplications/divisions by negative powers of two by shifts (and a negate)
* ppc64: replacement of divison by constants now properly check the -O2 compiler switch

git-svn-id: trunk@1662 -
2005-11-05 17:59:14 +00:00
tom_at_work
e4a61f4af1 * a_op_const_reg_reg optimizations
* added some more 64 bit PPC opcodes
* removed last mwpascal references
* added replacement of division/modulo by constant by multiplications and shifts for 64 bit
* general cleanup

git-svn-id: trunk@1648 -
2005-11-04 22:49:05 +00:00
tom_at_work
9228588260 - added handling of OS_NO parameters in a_param_ref
git-svn-id: trunk@1619 -
2005-11-01 21:11:50 +00:00
tom_at_work
c5f89d7efd * release old stack pointer register on ppc64 after method prolog
* threading fixes for ppc64
* fixed a_param_ref to respect the size parameter on ppc64
* better stack size calculation for ppc64

git-svn-id: trunk@1599 -
2005-10-26 19:50:17 +00:00
tom_at_work
5520442fc4 * call by register now also takes care of the TOC and environment pointer
* first "optimize for size"-optimization

git-svn-id: trunk@1593 -
2005-10-25 20:12:21 +00:00
tom_at_work
9531293b89 * jumptable support
* fixed cg for loading from addresses with symbol and large offset, but no base register

git-svn-id: trunk@1547 -
2005-10-20 17:33:33 +00:00
tom_at_work
5fcb64f350 * parameter passing is now more ABI compliant
* stack frame size optimization
* optimized (64 bit) constant loading
* some code generator code cleanup

git-svn-id: trunk@1539 -
2005-10-19 23:25:21 +00:00
tom_at_work
0ba960e1bd * added workarounds for some load/store instructions requiring 4 byte aligned addresses
* some cleanup and optimization of 64 bit address loading in the code generator
* small changes to the IDE to make it compile
* stat type update for packages/cdrom compatibility

git-svn-id: trunk@1375 -
2005-10-14 00:00:16 +00:00
tom_at_work
9e7d550455 * fixed last commit (1337) which broke some files in the repository
git-svn-id: trunk@1338 -
2005-10-08 17:23:44 +00:00
tom_at_work
f7f0f9c426 * makefile adaption to be able to cycle compiler and RTL on PowerPC64 target
* some fixes for PowerPC64 target in the code generator and the RTL
* stabs generation for PowerPC64 is okay now (untested)

git-svn-id: trunk@1337 -
2005-10-08 15:48:39 +00:00
tom_at_work
b2e1cf2610 * powerpc64 port now (manually) cycles, most test programs in tests/test are fine too
* fixed bug in ncal.pas which in some circumstances treated the hidden length parameter for open arrays as 32 bit integer

git-svn-id: trunk@1303 -
2005-10-05 21:55:25 +00:00
tom_at_work
28381b1287 * new assembler symbol type AT_LABEL needed for PowerPc64 target
+ added automatic definition of FPC_REQUIRES_PROPER_ALIGNMENT define for PowerPC64 target

git-svn-id: trunk@1278 -
2005-10-03 22:13:45 +00:00
tom_at_work
3681639a6a - more PowerPC64 fixes; "Hello World" style programs can be compiled and run
git-svn-id: trunk@1209 -
2005-09-27 18:16:49 +00:00
peter
6bf3269b41 * powerpc64 port from Thomas Schatzl
git-svn-id: trunk@1193 -
2005-09-25 17:19:44 +00:00