florian
1afb1aa9cc
+ ror/rol functions
...
+ internal compiler support for ror/rol on i386
git-svn-id: trunk@11466 -
2008-07-27 17:12:32 +00:00
Jonas Maebe
f36e5411af
* split cpu64bit compiler define into
...
a) cpu64bitaddr, which means that we are generating a compiler which
will generate code for targets with a 64 bit address space/abi
b) cpu64bitalu, which means that we are generating a compiler which
will generate code for a cpu with support for 64 bit integer
operations (possibly running in a 32 bit address space, depending
on the cpu64bitaddr define)
All cpus which had cpu64bit set now have both the above defines set,
and none of the 32 bit cpus have cpu64bitalu set (and none will
compile with it currently)
+ pint and puint types, similar to aint/aword (not pword because that
that conflicts with pword=^word)
* several changes from aint/aword to pint/pword
* some changes of tcgsize2size[OS_INT] to sizeof(pint)
git-svn-id: trunk@10320 -
2008-02-13 20:44:00 +00:00
Jonas Maebe
8349cde7db
* changed byte/word/longbool to be Delphi-compatible (+ similar changes
...
for qwordbool) + test:
o assigning true to such a variable now sets them to $ff/$ffff/$ffffffff
o these types are now all signed
o converting an integer type to a byte/word/long/qwordbool using an
explicit type cast keeps the integer's original value stored in the
bool, instead of forcing it to ord(true)/ord(false)
(mantis #10233 and #10613 , implemented for all architectures, testsuite
tested for ppc32, sparc and x86)
* fixed some places where the rtl depended on longbool(true) having the
value 1
* extended several boolean tests (and adapted some to no longer assume
that byte/word/long/qwordbool(true)=1)
+ support for converting to qwordbool in second_int_to_bool for x86, ppc
and sparc
git-svn-id: trunk@9898 -
2008-01-24 21:30:55 +00:00
Jonas Maebe
6c536dab3e
* added several missing make_simple_ref() calls
...
* removed addr_pic again for darwin, as you have to explicitly code
the relative address using a relsym instead of using an assembler
directive like @GOT there
git-svn-id: trunk@9353 -
2007-11-29 22:06:14 +00:00
peter
dbba46c0e4
* set addr_pic
...
git-svn-id: trunk@9350 -
2007-11-29 21:15:22 +00:00
Jonas Maebe
c8f270c556
+ darwin/x86_64 gprof support
...
git-svn-id: trunk@9252 -
2007-11-14 20:47:55 +00:00
Jonas Maebe
032352d98b
+ darwin/x86_64 support
...
git-svn-id: trunk@9180 -
2007-11-10 18:33:09 +00:00
Jonas Maebe
8d8ba9a583
* fixed pic reference loading for non-darwin i386 platforms after
...
r8657
git-svn-id: trunk@8993 -
2007-10-29 19:00:15 +00:00
florian
19b79468ad
* store/load mmx registers properly
...
* sse registers can be stored/loaded aligned on x86-64
git-svn-id: trunk@8969 -
2007-10-28 14:08:57 +00:00
florian
f32831c44a
* fixed assembling of fisttp of sse3 instruction set
...
+ sse3 optimized trunc() using fisttp
+ -Cfsse3 for x86-64
git-svn-id: trunk@8962 -
2007-10-27 20:50:46 +00:00
Jonas Maebe
c84744b27f
* fixed a_jmp_name() for darwin/i386 (go via a stub)
...
* fixed g_external_wrapper for darwin/i386 (both with and without pic,
by using a_jmp_name(), because the darwin jump stubs can always
be called directly)
git-svn-id: trunk@8669 -
2007-09-28 14:12:46 +00:00
Jonas Maebe
3266f4e483
+ Compiler support for pic on darwin/i386. The i386 rtl still needs
...
to be made pic-safe (mainly accesses to the global default8087cw)
* At the same time also made the non-pic code abi-compliant (access
external data via indirect symbol pointers etc)
Darwin/i386 also puts the got into a virtual register (like
Darwin/ppc), a.o. because the register allocator fails to colour
a routine in aasmcpu.pas if we take away ebx from it.
git-svn-id: trunk@8657 -
2007-09-26 21:42:27 +00:00
Jonas Maebe
9750e49d5a
* fixed x86 compilation after r8651
...
git-svn-id: trunk@8652 -
2007-09-26 17:25:38 +00:00
Jonas Maebe
ecd2445602
+ segment register support in g_concatcopy (should fix #9667 , but I
...
can't test since I don't have Dos/Windows -- at least the changes
don't break Linux/i386)
git-svn-id: trunk@8608 -
2007-09-22 20:10:56 +00:00
tom_at_work
b0bb3f94a7
* improve powerpc64/linux stub for external procedures in units: also consider GOT change in call to this external procedure
...
* refactored above mentioned stub code generation, allowing the CG to define a cpu specific method for this task by overriding new g_external_wrapper() method
git-svn-id: trunk@8566 -
2007-09-19 20:41:39 +00:00
peter
2f044481ae
* release temp when downgrading fpuregister value
...
git-svn-id: trunk@8530 -
2007-09-17 20:52:24 +00:00
daniel
a05d228679
- Remove IE from g_concatcopy again.
...
git-svn-id: trunk@8065 -
2007-07-15 16:15:13 +00:00
daniel
f0633187f4
+ Change constants in g_concatcopy to make the right decisions on x86_64.
...
* Fix move copy in g_concatcopy for x86_64.
git-svn-id: trunk@8058 -
2007-07-14 21:29:57 +00:00
daniel
4f6eb50391
+ Internalerror if g_concatcopy is called with len=0.
...
git-svn-id: trunk@8052 -
2007-07-14 18:56:16 +00:00
florian
c7100799ed
+ forbid usage of $E on targets supporting no fpu emulation
...
- disabled -Cfsoft on i386
git-svn-id: trunk@7625 -
2007-06-10 17:03:26 +00:00
florian
fe69d19f9c
* align stack properly if no stack frame is generated, should resolve #8986
...
git-svn-id: trunk@7611 -
2007-06-09 18:46:35 +00:00
florian
f87e96dfb0
* properly release open array value parameters on x86-64 or if they contain automated types, resolves #8664
...
git-svn-id: trunk@7100 -
2007-04-13 19:20:56 +00:00
Jonas Maebe
abef29c1d5
* fixed x86 vector mmloads and use scalar loads in ncgcnv
...
git-svn-id: trunk@5967 -
2007-01-14 13:36:26 +00:00
Jonas Maebe
fc99b0ad48
* fixed floating point precision conversions for loc_mmregister and
...
between loc_fpuregister and loc_mmregister
git-svn-id: trunk@5942 -
2007-01-13 15:00:00 +00:00
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
florian
36a500c38c
* don't coalescate with frame/stack pointer
...
git-svn-id: trunk@5880 -
2007-01-11 10:47:07 +00:00
florian
c238bb15d1
* .init section support
...
git-svn-id: trunk@5835 -
2007-01-07 10:03:52 +00:00
florian
836dbad1b2
* bitpacked stuff fixed for x86-64
...
git-svn-id: trunk@5503 -
2006-11-26 21:57:34 +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
florian
fb5e396881
+ experimental -Sv option to support vector arithmetics
...
git-svn-id: trunk@4825 -
2006-10-07 21:39:48 +00:00
peter
0bb22a2d17
* don't generate fwait by default anymore
...
* SAVEFPUEXCEPTIONS switch added to enable fwait inserts
git-svn-id: trunk@4733 -
2006-09-26 19:22:45 +00:00
florian
efd24ba7a0
* x86_64 abis ensure that the direction flag is clear at procedure entry
...
git-svn-id: trunk@4689 -
2006-09-23 10:08:47 +00:00
florian
abc957d80d
* fixed stack initialization on Win x64, still not sure if it is necessary
...
git-svn-id: trunk@4617 -
2006-09-12 20:49:18 +00:00
Jonas Maebe
51259b697b
* more mmx/sse register spilling fixes:
...
* operand read/write info for movaps and movapd
* use "movapd reg,reg" instead of "movaps reg,reg" if appropriate
so the spilling code can spill the correct size to memory
* replace movaps/movapd with movss/movsd when spilling to memory
instead of movq
git-svn-id: trunk@4612 -
2006-09-12 11:07:45 +00:00
florian
b3ae0c51a4
* sizes2load handles OS_NO properly if one size is given
...
git-svn-id: trunk@4586 -
2006-09-09 18:12:07 +00:00
florian
55484f9bb7
* shifting can operate on 64 bit values on x86_64
...
git-svn-id: trunk@4561 -
2006-09-07 19:41:02 +00:00
florian
6d0a078441
* do stack page initialization on i386-wince as well
...
git-svn-id: trunk@4521 -
2006-08-31 14:23:29 +00:00
florian
9e66674ff9
+ first part of qwordbool implementation
...
git-svn-id: trunk@4462 -
2006-08-19 23:16:17 +00:00
Jonas Maebe
a3a74c3fbe
* fixed interface wrappers for darwin in case they end up in
...
a shared library
git-svn-id: trunk@3980 -
2006-06-27 14:32:14 +00:00
daniel
3048a98a6f
* Fix and activate internal backtrace routines
...
git-svn-id: trunk@3524 -
2006-05-14 13:04:03 +00:00
peter
0a50dd1029
* give IE if fpu stack counter becomes < 0
...
git-svn-id: trunk@3294 -
2006-04-20 11:15:54 +00:00
florian
af4d5c898a
+ stack touching for win64
...
git-svn-id: trunk@3252 -
2006-04-17 19:00:53 +00:00
florian
2d3d4a66f6
* keep stack aligned to 16 byte borders on winx64
...
git-svn-id: trunk@3212 -
2006-04-15 16:48:28 +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
Vincent Snijders
7dfd96b59c
* fixed another typo
...
git-svn-id: trunk@2927 -
2006-03-15 20:42:14 +00:00
Vincent Snijders
594861974d
* fixed typo
...
git-svn-id: trunk@2926 -
2006-03-15 20:28:02 +00:00
peter
588cccb3ca
* remove some obsolete i386 specific code
...
* use a_optimize_const to remove useless opcodes
git-svn-id: trunk@2910 -
2006-03-13 16:37:08 +00:00
peter
b6e35a200e
* rewrite of optimizer options
...
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
Jonas Maebe
9125d0c189
* also align esp for all procedures/functions declared "assembler",
...
since they may do a call. If you don't want that to happen, use
the nostackframe directive (i386-darwin only)
git-svn-id: trunk@2896 -
2006-03-12 21:20:29 +00:00
Jonas Maebe
435aee2398
* fixed g_copyvaluepara_openarray/g_releasevaluepara_openarray for
...
use_fixed_stack (use generic code)
git-svn-id: trunk@2895 -
2006-03-12 21:04:59 +00:00
Jonas Maebe
e7112c6636
* ignore po_interrupt for i386-darwin since it messes up stack alignment
...
git-svn-id: trunk@2857 -
2006-03-11 14:30:02 +00:00
Jonas Maebe
9de2847865
+ support for passing parameters via pre-allocated stack space on i386
...
(override/adjust cgutils.use_fixed_stack to change conditions where
this is done, currently only activated for darwin-i386)
* make sure the stack is always aligned to 16 bytes on darwin-i386
git-svn-id: trunk@2840 -
2006-03-10 19:59:44 +00:00
Jonas Maebe
d7b4ac73cf
+ darwin/x86 support for a_call_name
...
git-svn-id: trunk@2819 -
2006-03-09 15:02:55 +00:00
Jonas Maebe
d2ba35df7e
* don't destroy edi when allocating the stack frame for win32
...
git-svn-id: trunk@2330 -
2006-01-23 10:54:48 +00:00
florian
f5d790f9b6
* i386 uses dwarf cfi info on linux/win32, so even when omitting the stack frame, trace backs in gdb are correct
...
git-svn-id: trunk@2316 -
2006-01-21 14:30:57 +00:00
florian
a3e3e7e8c5
* avoid esp to be freed
...
git-svn-id: trunk@2203 -
2006-01-07 14:32:09 +00:00
Jonas Maebe
7aa315c71a
* made some Tcpuregisterset parameters const to avoid useless copying
...
git-svn-id: trunk@2176 -
2006-01-05 10:10:25 +00:00
florian
f7d2c47f73
+ no stackframe is generated for i386 if possible
...
git-svn-id: trunk@2162 -
2006-01-04 19:19:06 +00:00
florian
61e3b70cfa
* cleaned up segmented thread variables
...
git-svn-id: trunk@2135 -
2006-01-03 12:49:29 +00:00
florian
fb4557d71e
* first implementation of pic for i386
...
git-svn-id: trunk@2107 -
2006-01-01 20:14:48 +00:00
florian
99be25604b
* fixed address calculation when generating pic
...
git-svn-id: trunk@1759 -
2005-11-15 19:25:42 +00:00
florian
72d7597edc
+ implementation of lazy binding for linux
...
git-svn-id: trunk@1750 -
2005-11-14 22:28:12 +00:00
florian
2585309c04
* of course, we can't omit pic generation for local symbols
...
git-svn-id: trunk@1743 -
2005-11-13 21:36:38 +00:00
florian
ff6af1804b
* fixed loading of pic'ed symbols with offset
...
* symbols declared AB_COMMON or AB_LOCAL need no pic
git-svn-id: trunk@1739 -
2005-11-13 21:05:42 +00:00
florian
bc7fab1aeb
+ plt support for x86_64
...
git-svn-id: trunk@1578 -
2005-10-23 14:47:09 +00:00
florian
1b97e2cffd
+ added missing make_simple_ref
...
git-svn-id: trunk@1572 -
2005-10-23 13:28:43 +00:00
peter
a3ab2053c9
* support multiple asmlabel types, renamed getlabel to
...
getjumplabel and added type para to getlabel for specific types
* moved lineinfo generation from assemble and aggas to dbgstabs
git-svn-id: trunk@1120 -
2005-09-18 21:16:10 +00:00
daniel
22e89e1a42
* Proof of concept: Support threadvars using segment registers.
...
git-svn-id: trunk@740 -
2005-07-24 21:06:23 +00:00
florian
83209064f9
* getmmregister should test the mm register allocator for being assigned
...
git-svn-id: trunk@221 -
2005-06-05 15:32:24 +00:00
florian
c97714de9f
* renamed windows related units from win32 to win so it can contain ce and 64 bit stuff
...
git-svn-id: trunk@213 -
2005-06-05 13:42:35 +00:00
florian
ebcb69478f
* fixed a lot of stuff for fpu/mm register variables
...
git-svn-id: trunk@199 -
2005-06-04 21:23:15 +00:00
florian
b0545a7a04
* first bunch of pic fixes
...
git-svn-id: trunk@76 -
2005-05-22 19:57:38 +00:00
fpc
790a4fe2d3
* log and id tags removed
...
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3
initial import
...
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
florian
0811184277
+ pic code reading for the assembler readers
...
* loadaddr generates pic code as well now
2005-04-25 09:51:07 +00:00
florian
0cd81efba7
+ storing non-extended floats to memory generates now a fwait to get exceptions at the correct place
2005-03-13 17:15:26 +00:00
peter
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
florian
b1c8bfc478
+ x86_64 pic draft
2005-02-06 00:05:56 +00:00
florian
3835b9f13b
* fixed previous commit
2005-02-05 18:32:17 +00:00
florian
e94fe45846
* fixed dword -> qword/int64 type cast on x86_64
2005-02-05 18:08:48 +00:00
peter
0991cb288d
* tf_pic_uses_got added
2005-01-25 18:48:15 +00:00
florian
cf55930118
* fixed loadaddr; I wonder how it ever worked
2005-01-08 16:00:55 +00:00
florian
0037f4a199
* fixed operand size calculation for sse operands
...
+ all nasm assembler targets to help page output added
2004-12-12 10:50:34 +00:00
florian
7b8c44bbce
* fixed open arrays when using register variables
2004-11-08 20:23:29 +00:00
florian
c94553080b
+ added profiler call for x86_64
2004-11-02 20:50:54 +00:00
florian
bfce614370
* fixed -<sse register>
...
* information about simple moves for sse is given to the register allocator
2004-11-02 18:23:16 +00:00
peter
9b00c7832e
* support > 32bit accesses for x86_64
...
* rewrote array size checking to support 64bit
2004-11-01 23:30:11 +00:00
florian
1c569cbd08
* cvt*2* can't write to memory location, fixed
2004-11-01 15:42:47 +00:00
peter
882cc700fb
* fixed uninited var in a_load_reg_ref
2004-11-01 10:30:06 +00:00
peter
c95a859f0a
* generic tlocation
...
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
peter
d19663f3a8
* save standard registers moved to tcgobj
2004-10-25 15:36:47 +00:00
peter
30d25d1d2b
* -Or fixes
2004-10-24 20:10:08 +00:00
peter
adb6f59eef
* small regvar fixes
...
* loadref parameter removed from concatcopy,incrrefcount,etc
2004-10-24 11:44:28 +00:00
Jonas Maebe
2b030488b2
* regvar fixes from Peter
2004-10-06 19:26:50 +00:00
peter
f5471aef6e
* more spilling rewrites
2004-10-05 20:41:01 +00:00
peter
ee3585f56f
* spilling code rewritten for x86. It now used the generic
...
spilling routines. Special x86 optimization still needs
to be added.
* Spilling fixed when both operands needed to be spilled
* Cleanup of spilling routine, do_spill_readwritten removed
2004-10-04 20:46:22 +00:00
florian
001292bf50
* made sqrt, sqr and abs internal for the sparc
2004-10-03 12:41:30 +00:00
peter
65c3ba277c
* ungetregister is now only used for cpuregisters, renamed to
...
ungetcpuregister
* renamed (get|unget)explicitregister(s) to ..cpuregister
* removed location-release/reference_release
2004-09-25 14:23:54 +00:00