yury
c6253d5bd7
* Added missing override directive in trgcpu.add_constraints method for x86_64 CPU. It was missing for years and I am not sure that this code is really needed. Please review.
...
git-svn-id: trunk@13141 -
2009-05-13 11:37:09 +00:00
yury
f726e1691b
* Fixed warnings and notes.
...
git-svn-id: trunk@13139 -
2009-05-13 11:26:01 +00:00
florian
694f563079
* fixed assembler tables for sse4 instructions, resolves #13186
...
git-svn-id: trunk@12787 -
2009-02-24 20:07:11 +00:00
Jonas Maebe
7d459cf12a
* the compiler now explicitly keeps track of the minimally guaranteed
...
alignment for each memory reference (mantis #12137 , and
test/packages/fcl-registry/tregistry1.pp on sparc). This also
enables better code generation for packed records in many cases.
o several changes were made to the compiler to minimise the chances
of accidentally forgetting to set the alignment of memory references
in the future:
- reference_reset*() now has an extra alignment parameter
- location_reset() can now only be used for non LOC_(C)REFERENCE,
use location_reset_ref() for those (split the tloc enum so the
compiler can catch errors using range checking)
git-svn-id: trunk@12719 -
2009-02-08 13:00:24 +00:00
florian
17a08efb82
* handle methodpointer function results like records of the same size, resolves #12318
...
git-svn-id: trunk@12118 -
2008-11-15 23:05:36 +00:00
florian
49195b0ac0
* fixes assembling of mov ax,<mem16>
...
* fixes assembling of test <mem8>,reg8; resolves #11786
git-svn-id: trunk@12040 -
2008-11-09 10:24:59 +00:00
Jonas Maebe
53e52ac6a9
* implementation of 32x32->64 multiplication for i386 based on patch
...
by Sergei Gorelkin
git-svn-id: trunk@12028 -
2008-11-06 21:03:10 +00:00
Jonas Maebe
a23630260b
+ "weakexternal" support for imported procedures and variables.
...
the syntax is exactly the same as for "external", except for
the keyword. It is currently only active for Darwin targets.
It should also work at least for Linux targets, but only with
the GNU assembler (which is why it is not activated there)
+ test for this functionality
git-svn-id: trunk@12009 -
2008-11-01 18:38:32 +00:00
yury
491f0fa1d8
* Replaced all user defined warnings by TODO comments to reduce compiler noise.
...
git-svn-id: trunk@11443 -
2008-07-23 11:00:03 +00:00
Jonas Maebe
a6b9b3e00a
* fixed a_param_ref for source sizes < 8 bytes
...
git-svn-id: trunk@10505 -
2008-03-18 20:10:22 +00:00
peter
8f239d04b6
* cleanup and simplify the set type handling
...
git-svn-id: trunk@10432 -
2008-03-02 17:48:27 +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
florian
1a2a4af773
* hopefully the final fix for x86-64 sysv calling conventions
...
git-svn-id: trunk@10304 -
2008-02-11 19:46:40 +00:00
florian
4592402529
* fixed sysv x86-64 function results for records and arrays with sizes 9..16 bytes
...
git-svn-id: trunk@10285 -
2008-02-10 22:28:07 +00:00
Jonas Maebe
3e63d3f1dd
- removed {$ifndef cpu64bit} code
...
git-svn-id: trunk@10275 -
2008-02-10 17:05:27 +00:00
Jonas Maebe
3d89822bc4
* free saved_standard_registers and saved_mm_registers in
...
done_register_allocators
git-svn-id: trunk@9527 -
2007-12-25 23:47:44 +00:00
Jonas Maebe
2adb00ac45
* enabled operand size checking (don't know why it was disabled,
...
but enabling it lets the compiler catch the error in tbf/tb0037
and causes no regressions)
git-svn-id: trunk@9465 -
2007-12-15 22:30:23 +00:00
Jonas Maebe
146b3d8bf3
* fixed location.size for length node and x86_64 mul node
...
git-svn-id: trunk@9464 -
2007-12-15 19:27:24 +00:00
Jonas Maebe
974c240266
* also use sse2 instructions to convert int to real on i386
...
for (types convertable to) longint
* fixed expectloc for x86_64 int_to_real if result is in mmreg
git-svn-id: trunk@9423 -
2007-12-09 18:10:23 +00:00
Jonas Maebe
444ba107f8
* fixed location.size for divmodn (in particular the sign)
...
git-svn-id: trunk@9422 -
2007-12-09 18:06:44 +00:00
Jonas Maebe
defe46ef42
* added missing size suffixes for several sse2 opcodes
...
git-svn-id: trunk@9182 -
2007-11-10 19:57:01 +00:00
Jonas Maebe
032352d98b
+ darwin/x86_64 support
...
git-svn-id: trunk@9180 -
2007-11-10 18:33:09 +00:00
florian
965bb41288
* fixed more rex placements
...
git-svn-id: trunk@9069 -
2007-11-02 21:30:43 +00:00
florian
82c7896d8d
* more ins. dat issues popped up, did I mention I start to hate it :(?
...
git-svn-id: trunk@8968 -
2007-10-28 14:08:04 +00:00
florian
c1d62172fe
* the saga continues, fixed previously broken assembler table entries
...
git-svn-id: trunk@8967 -
2007-10-28 13:01:58 +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
florian
46e1587395
* another bunch of assembler fixes, win64 builds again
...
git-svn-id: trunk@8957 -
2007-10-27 19:49:53 +00:00
florian
00d6a03b2c
+ default code now preserves mm registers
...
* save|restore_standard_registers => save|restore_registers
git-svn-id: trunk@8954 -
2007-10-27 12:02:28 +00:00
florian
8f5a4cc514
* more, hopefully correct, x86-64 assembler fixes
...
git-svn-id: trunk@8952 -
2007-10-26 20:44:57 +00:00
florian
c5f492ef50
* fixed assembling of movq mem,xmmreg
...
git-svn-id: trunk@8923 -
2007-10-24 20:45:38 +00:00
peter
a0ebdcf820
* enable regvar for -O2
...
git-svn-id: trunk@8910 -
2007-10-22 16:50:09 +00:00
florian
1cb5d2a603
* some missing make_simple_ref calls added, resolves #8948
...
git-svn-id: trunk@8904 -
2007-10-21 20:19:04 +00:00
peter
43c2694d50
* fixed REX placement for xmm opcodes
...
git-svn-id: trunk@8850 -
2007-10-18 23:30:35 +00:00
peter
ad944fd198
* move x86_64 specific int_to_real conversion to nx64cnv
...
* fix x86_64 code for none loc_register/loc_reference location
git-svn-id: trunk@8844 -
2007-10-18 20:46:44 +00:00
florian
bb314e5456
* regenerated
...
git-svn-id: trunk@8788 -
2007-10-14 09:32:15 +00:00
florian
5d31cd02a7
* regenerated
...
git-svn-id: trunk@8786 -
2007-10-14 09:04:56 +00:00
florian
342ba323cf
* fixed assembling of cvtsi2ss with rex
...
git-svn-id: trunk@8777 -
2007-10-13 14:53:27 +00:00
Jonas Maebe
a8191abd16
* fixed parsing of "rcl/rcr rm,imm" (mantis #9025 )
...
git-svn-id: trunk@8272 -
2007-08-12 13:50:52 +00:00
peter
2e9968d46c
* arrays always by addr
...
git-svn-id: trunk@8232 -
2007-08-06 19:44:25 +00:00
peter
f5d5e377d2
* fix linux x86_64 for records and arrays
...
git-svn-id: trunk@8224 -
2007-08-05 19:38:21 +00:00
peter
4e6c57b9ee
* cleanup x86_64 structures in registers
...
git-svn-id: trunk@8214 -
2007-08-02 20:46:48 +00:00
florian
be6d2dd0f9
* reverted wrong commit in r8133
...
git-svn-id: trunk@8135 -
2007-07-22 17:00:51 +00:00
florian
447276c5bb
* Jcc reads the flags, this was not in the dat yet, resolves #9278
...
* disabled 4 ops variant of insertq for now
git-svn-id: trunk@8133 -
2007-07-22 16:40:44 +00:00
daniel
5add416dab
* Fix mul opsize
...
git-svn-id: trunk@8131 -
2007-07-22 11:48:10 +00:00
daniel
5ce54c6a20
+ For muln, don't load left operand in register unless necessary.
...
(mul supports memory operands).
git-svn-id: trunk@8110 -
2007-07-21 09:20:33 +00:00
daniel
4a3870eb12
* Fix bug #9261 .
...
git-svn-id: trunk@8056 -
2007-07-14 20:57:56 +00:00
daniel
f31889df57
* Pass const params by pointer if calling convention<>register. This is
...
needed for the windows unit as Delphi compatibility requires const
parameters for some procedures and Delphi assumes parameters > 4 to be
passed as pointer.
git-svn-id: trunk@7982 -
2007-07-08 17:26:08 +00:00
daniel
44e07cd098
* Fix bug #9141 and pass const params <=16 in by value.
...
git-svn-id: trunk@7979 -
2007-07-07 21:01:46 +00:00
daniel
e002e6b9f4
* Also execute setfirsttemp on non-Windows platforms. Fixes -O2 cycle on Linux.
...
git-svn-id: trunk@7848 -
2007-06-29 17:46:27 +00:00
daniel
62b6fcead8
* Fix operator count.
...
git-svn-id: trunk@7835 -
2007-06-27 20:31:58 +00:00