Commit Graph

244 Commits

Author SHA1 Message Date
florian
98d6014c73 * register saving on win64 fixed
git-svn-id: trunk@5785 -
2007-01-02 14:34:03 +00:00
florian
a95c2220cc * fixed volatile registers for x86_64-win64
git-svn-id: trunk@5781 -
2007-01-01 23:26:21 +00:00
florian
4c2b412613 * x86_64-win64 returns structured types up to 8 bytes in rax
git-svn-id: trunk@5528 -
2006-12-02 15:36:32 +00:00
florian
6118c3e477 * fixed assembling of movd with 64 bit registers
* fixed passing of floats to c varargs

git-svn-id: trunk@5477 -
2006-11-25 20:32:32 +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
peter
23596358a7 * fix arraydef copybyvalue check
git-svn-id: trunk@5088 -
2006-10-30 10:27:49 +00:00
peter
3078a1927f * remove ttype
* rename old ttype variables *type to *def
  * rename resulttypepass to pass_typecheck
  * rename pass_2 to pass_generate_code

git-svn-id: trunk@5077 -
2006-10-29 22:19:39 +00:00
florian
5eef73c1ab * fixed passing of registers on x86-64_linux, should fix #7613
git-svn-id: trunk@4951 -
2006-10-17 20:58:16 +00:00
florian
de0bf34a10 * recreated
git-svn-id: trunk@4908 -
2006-10-14 16:54:21 +00:00
florian
1dd80243e5 * tables recreated
git-svn-id: trunk@4899 -
2006-10-14 11:21:41 +00:00
florian
2a54d957b2 * fixed two small errors
* supported_optimizerswitches now takes generic flags also into account

git-svn-id: trunk@4865 -
2006-10-11 21:14:47 +00:00
florian
a61abb25cb * reorganized optimizer switch sets
git-svn-id: trunk@4862 -
2006-10-11 18:16:10 +00:00
florian
e8d5dc4ab2 * tailrecursion optimization enabled for for sparc, i386, x86-64 and arm
git-svn-id: trunk@4860 -
2006-10-11 16:34:28 +00:00
florian
fb5e396881 + experimental -Sv option to support vector arithmetics
git-svn-id: trunk@4825 -
2006-10-07 21:39:48 +00:00
florian
360cbe1de1 * fixed passing of structs on x86_64-linux
git-svn-id: trunk@4688 -
2006-09-23 09:05:21 +00:00
Jonas Maebe
91d9b1f77b * operand read/write info for movaps and movapd (from r4612)
git-svn-id: trunk@4616 -
2006-09-12 15:01:34 +00:00
florian
97ce278e14 * fixed another calling convention problem on win64
git-svn-id: trunk@4593 -
2006-09-09 20:11:47 +00:00
florian
819dec1411 * pass only non specialized arrays in registers on win x64
git-svn-id: trunk@4585 -
2006-09-09 17:33:41 +00:00
florian
24ae32c855 * fixed passing of record parameters on win64
git-svn-id: trunk@4583 -
2006-09-09 16:33:15 +00:00
florian
930086df3f * fixed cvtsi2sd for 64 bit ints
git-svn-id: trunk@4575 -
2006-09-08 21:34:12 +00:00
peter
d79df4c74a * 64bit support for shrd
git-svn-id: trunk@4541 -
2006-09-03 08:56:10 +00:00
peter
55053a586b * fix comisd
git-svn-id: trunk@3927 -
2006-06-23 21:41:19 +00:00
peter
2f147715f4 * more rex fixes
git-svn-id: trunk@3917 -
2006-06-21 19:51:09 +00:00
peter
b672df519a * flexible position of REX, required for SSE2 commands
git-svn-id: trunk@3906 -
2006-06-20 22:38:30 +00:00
florian
55962cef95 * don't do mul->shl optimizations when compiling with overflow checking
* keep operand size sign information in shl/shr

git-svn-id: trunk@3566 -
2006-05-18 19:30:44 +00:00
florian
f378d688d4 * fixed reading of registers in intel assembler mode on x86-64
git-svn-id: trunk@3488 -
2006-05-13 09:24:42 +00:00
florian
79b8d66212 * fixed safecall calling convention on x86_64
git-svn-id: trunk@3442 -
2006-05-06 22:56:34 +00:00
florian
23e67ee289 + intel assembler reader for x86-64
git-svn-id: trunk@3411 -
2006-05-01 19:56:00 +00:00
florian
5a888656ca * pass records of all sizes by reference if they are const
git-svn-id: trunk@3251 -
2006-04-17 18:12:14 +00:00
florian
61d86150aa * interface wrappers for win64 abi fixed
git-svn-id: trunk@3240 -
2006-04-17 08:25:44 +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
florian
9da293678e * fixed mm register parameters which were messed up by a previous commit
* fixed duplicate ie number

git-svn-id: trunk@3125 -
2006-04-02 19:15:38 +00:00
florian
d904a04d3b * fixed stackframe generation for win x64
git-svn-id: trunk@3124 -
2006-04-02 19:05:00 +00:00
florian
d0c327b14b * basic winx64 calling convention support
git-svn-id: trunk@3108 -
2006-04-01 14:42:52 +00:00
florian
1c9da313d9 * 64 bit movnti
git-svn-id: trunk@3091 -
2006-03-30 18:12:33 +00:00
florian
b215196734 * fixed cto
git-svn-id: trunk@3074 -
2006-03-29 18:25:48 +00:00
florian
085fa03853 * fix for cmp
git-svn-id: trunk@3062 -
2006-03-27 19:42:59 +00:00
peter
0ec2921bbe * split newasmsymbol to refasmsymbol and defineasmsymbol
git-svn-id: trunk@3057 -
2006-03-27 11:45:18 +00:00
florian
8a71767125 * movsql fixed in x86_64 assembler writer
git-svn-id: trunk@3048 -
2006-03-26 20:48:05 +00:00
florian
73e22f1919 * one byte inc/dec aren't allowed for x86_64
git-svn-id: trunk@3047 -
2006-03-26 20:27:02 +00:00
florian
87da67129c * rtl compilation with x86_64 binary writer fixed
git-svn-id: trunk@3042 -
2006-03-26 18:32:15 +00:00
florian
5d243f665a * fixed <instr> reg,reg with regs>=r8
* fixed section naming
* fixed relocations

git-svn-id: trunk@3041 -
2006-03-26 17:54:02 +00:00
florian
5519158dff + no rex.w prefix support
git-svn-id: trunk@3037 -
2006-03-25 19:45:09 +00:00
peter
35c4d43699 * disable regvars until it is fixed
git-svn-id: trunk@3008 -
2006-03-21 17:31:02 +00:00
peter
f87b04c034 Merged revisions 2994 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2994 | peter | 2006-03-21 07:58:12 +0100 (Tue, 21 Mar 2006) | 2 lines

  * use float size for parameters on the stack

........

git-svn-id: trunk@2995 -
2006-03-21 06:59:04 +00:00
florian
ec768f88ae + improved x86-64 assembler
git-svn-id: trunk@2983 -
2006-03-19 22:24:01 +00:00
Jonas Maebe
8a6ebdf274 - disabled loop unrolling for level 3 optimizations since it only causes
crashes (and even if it didn't, on its own it mainly causes code
    bloat)

git-svn-id: trunk@2941 -
2006-03-17 17:42:39 +00:00
florian
2a48eacea7 + standard assembler for x86-64
git-svn-id: trunk@2934 -
2006-03-16 19:54:18 +00:00
florian
38c132e8cb + added pass_left_right in second_mul, fixes the ie 200109092
git-svn-id: trunk@2933 -
2006-03-16 19:44:59 +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
peter
eb725d4e44 Merged revisions 2908,2911,2913-2917 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2908 | peter | 2006-03-13 13:35:48 +0100 (Mon, 13 Mar 2006) | 2 lines

  * merge trunk upto r2907

........
r2911 | peter | 2006-03-13 18:08:00 +0100 (Mon, 13 Mar 2006) | 2 lines

  * rename values to make room for operand size codes

........
........
........
r2915 | peter | 2006-03-14 13:51:35 +0100 (Tue, 14 Mar 2006) | 2 lines

  * check aktcputype

........
r2916 | peter | 2006-03-14 15:06:32 +0100 (Tue, 14 Mar 2006) | 3 lines

  * merge 300 opcodes
  * more 64bit versions of opcodes

........
r2917 | peter | 2006-03-14 17:34:03 +0100 (Tue, 14 Mar 2006) | 3 lines

  * x86_64 tables
  * convert movq with normal registers to mov

........

git-svn-id: trunk@2931 -
2006-03-16 08:09:28 +00:00
peter
2888a21593 * list supported optimization options in -i
* support $OPTIMIZATION and $O+

git-svn-id: trunk@2904 -
2006-03-13 11:17:56 +00:00
peter
b6e35a200e * rewrite of optimizer options
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
Jonas Maebe
01bfed76e3 + 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@2841 -
2006-03-10 20:01:16 +00:00
florian
5ece7cbc2f * first part of x86-64 assembler
git-svn-id: trunk@2824 -
2006-03-09 22:05:16 +00:00
florian
fdc1419832 * fixed interface wrappers in pic
git-svn-id: trunk@1728 -
2005-11-13 14:53:04 +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
peter
fdc4925fcd * basic framework for debuginfo class added
git-svn-id: trunk@1084 -
2005-09-15 08:34:51 +00:00
florian
db68fb68b4 * updated to nasm 0.98.39 and insns.dat Rev. 1.46
git-svn-id: trunk@836 -
2005-08-09 20:15:58 +00:00
florian
9be5247db5 * dyn. arrays are always passed by value, fixes 4240
git-svn-id: trunk@800 -
2005-08-05 21:52:58 +00:00
florian
804207239d *c <int64>:=-<longint> fixed (bug 4253)
git-svn-id: trunk@796 -
2005-08-05 19:00:30 +00:00
florian
5df84f7222 * cvtxx2yy has now proper modification information
git-svn-id: trunk@757 -
2005-07-26 21:06:02 +00:00
daniel
d05f58b604 * Group asmlists into array to be able to add
some of them more comfortably.
  * x86_64 compilation was broken, fixed.
  * Sparc compilation was broken, fixed.

git-svn-id: trunk@731 -
2005-07-23 13:44:32 +00:00
peter
c1b2e1aac5 * check function/procedure type when adding a proc definition
git-svn-id: trunk@546 -
2005-06-30 14:56:05 +00:00
florian
21ae782854 * fixed more xmm stuff
+ some win64 stuff added

git-svn-id: trunk@330 -
2005-06-09 20:50:17 +00:00
florian
335211c397 * t_win unit name fixed
git-svn-id: trunk@285 -
2005-06-08 13:25:49 +00:00
peter
4ace790492 * remove $Log
git-svn-id: trunk@231 -
2005-06-07 09:47:55 +00:00
florian
a7446e4a7b * changed operand information for multimedia xor operations
git-svn-id: trunk@204 -
2005-06-05 09:50:38 +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
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
peter
20ad7813c2 * fix empty varargs codegeneration for x86_64 2005-03-14 20:18:46 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
peter
adc66eaf55 * arrays are always passed by addr
* cdecl array of const is passed by value so it doesn't allocate
    anything
2005-02-06 18:59:15 +00:00
florian
b1c8bfc478 + x86_64 pic draft 2005-02-06 00:05:56 +00:00
peter
18ebd28692 * push_addr_param must be defined per target 2005-02-03 20:04:49 +00:00
peter
75f0b9eb40 * fix extended paraloc 2005-02-03 18:32:25 +00:00
peter
cd01e600b9 * update x86_64 with new cpupara 2005-01-29 11:36:52 +00:00
peter
e820bc93f2 * interface wrapper generation moved to cgobj
* generate interface wrappers after the module is parsed
2005-01-24 22:08:32 +00:00
peter
04c97cc129 * load jmp_buf_size from system unit 2005-01-20 16:38:45 +00:00
peter
ed9f8f54e7 * generic optimizer 2004-12-12 14:07:07 +00:00
peter
1c458abb0b * compile fixes for x86_64 2004-12-12 12:56:18 +00:00
peter
89b1b583c9 * ttempcreatenode.create_reg merged into .create with parameter
whether a register is allowed
  * funcret_paraloc renamed to funcretloc
2004-11-21 17:54:59 +00:00
florian
b8eb638978 * cg64f64 isn't used anymore 2004-11-01 17:44:27 +00:00
florian
00a32c2b31 + added cgutils uses clause 2004-11-01 17:40:29 +00:00
peter
705868e816 * remove saveregister calling convention 2004-10-24 20:01:08 +00:00
peter
2ee2004032 * fixed compilation with removed loadref 2004-10-24 11:53:45 +00:00
peter
60c73cc0e5 * -Or fixes for open array 2004-10-13 21:12:51 +00:00
peter
f2a75dd91f * fixed location size for s64comp 2004-10-05 20:55:49 +00:00
peter
f5471aef6e * more spilling rewrites 2004-10-05 20:41:01 +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
peter
33a834821f * paraloc branch merged 2004-09-21 17:25:12 +00:00
Jonas Maebe
1dd5fc2b47 * changed first_sse_imreg to first_mm_imreg 2004-07-09 23:30:13 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00
florian
588e2c38bf * dwarf branch merged 2004-06-16 20:07:06 +00:00
florian
c68ea95074 + syscall directive support for MorphOS added 2004-04-28 15:19:03 +00:00
florian
c51b6fa45b + AInt added 2004-04-12 18:25:26 +00:00
florian
01d16548f4 * fixed exception reason size for 64 bit systems 2004-02-22 18:27:21 +00:00
florian
00dbe6655d + nx86set added
* some more x86-64 fixes
2004-02-22 12:04:04 +00:00
peter
e6929a1a32 * more x86_64 parameter fixes
* tparalocation.lochigh is now used to indicate if registerhigh
    is used and what the type is
2004-02-09 22:14:17 +00:00
peter
221090453c * x86_64 fixes for opsize 2004-02-05 18:28:37 +00:00
florian
465aa5851b * several fixes to compile x86-64 system 2004-02-05 01:24:08 +00:00
peter
8c5b0f7d82 * first try to get cpupara working for x86_64 2004-02-04 22:01:13 +00:00
peter
8012731ede *** empty log message *** 2004-02-04 19:22:27 +00:00
peter
1422985ca0 * Change several $ifdef i386 to x86
* Change several OS_32 to OS_INT/OS_ADDR
2004-01-31 17:45:16 +00:00
florian
c37035a450 * common addnode code for x86-64 and i386 2004-01-20 12:59:36 +00:00
florian
412072f71d * renamed instruction tables 2004-01-15 13:57:58 +00:00
florian
85bed883ce * another bunch of x86-64 fixes mainly calling convention and
assembler reader related
2004-01-14 23:39:05 +00:00
florian
f936718fa1 * x86-64 compilation fixed 2004-01-13 18:08:58 +00:00
florian
c72e3a8eea * updated instruction includes from new instruction table 2003-12-26 20:24:03 +00:00
florian
06442fa677 + $fputype directive support
+ single data type operations with sse unit
  * fixed more x86-64 stuff
2003-12-25 01:07:09 +00:00
florian
6d3d97e845 * first fixes to compile the x86-64 system unit 2003-12-24 01:47:22 +00:00
florian
f84979f02d * x86-64 compilation fixed 2003-12-24 00:33:10 +00:00
florian
9c476ba5f1 - delete parameter in cg64 methods removed 2003-12-24 00:10:02 +00:00
florian
6170faf334 * fixed some x86-64 issues 2003-12-22 19:00:17 +00:00
florian
9fd5217032 * some x86-64 compilation fixe 2003-12-20 12:38:51 +00:00
florian
1af574ceca * assembler readers OOPed
+ typed currency constants
  + typed 128 bit float constants if the CPU supports it
2003-11-12 16:05:39 +00:00
florian
0493cd3d2e * more x86-64 fixes 2003-09-25 13:13:32 +00:00
florian
8edd479391 * several fixes for new reg allocator 2003-09-24 17:12:02 +00:00
peter
0dceec9a64 * current_procdef removed, use current_procinfo.procdef instead 2003-06-13 21:19:30 +00:00
daniel
41e0bc4cec * Register allocator finished 2003-06-03 13:01:59 +00:00
peter
1e7ecac976 * FUNCTION_RESULT64_LOW/HIGH_REG added for int64 results 2003-05-31 15:05:28 +00:00
peter
414bd5fa22 * more sparc cleanup
* accumulator removed, splitted in function_return_reg (called) and
    function_result_reg (caller)
2003-05-30 23:57:08 +00:00
florian
72df326165 * some 64 bit adaptions in ncgadd
* x86-64 now uses ncgadd
  * tparamanager.ret_in_acc doesn't return true anymore for a void-def
2003-04-30 22:15:59 +00:00
florian
91bbc7bea3 * error when address of an abstract method is taken
* fixed some x86-64 problems
  * merged some more x86-64 and i386 code
2003-04-30 20:53:32 +00:00
florian
de6916276a * merged more x86-64/i386 code 2003-04-30 15:45:35 +00:00
florian
754a34200a * merged i386/aasmcpu and x86_64/aasmcpu to x86/aasmcpu 2003-04-25 12:43:40 +00:00
florian
ad2f6d6dab * merged agx64att and ag386att to x86/agx86att 2003-04-25 12:04:31 +00:00
florian
98d09473e4 * merged i386/cpubase and x86_64/cpubase to x86/cpubase;
different stuff went to cpubase.inc
2003-04-25 11:12:09 +00:00
armin
8473dada93 * avoid problems with the ide in init/dome 2003-03-26 12:50:54 +00:00
carl
59d3edeec7 * Several bugfixes for m68k target (register alloc., opcode emission)
+ VIS target
  + Generic add more complete (still not verified)
2003-02-02 19:25:54 +00:00
florian
b59b436130 * x86-64 compiles
+ very basic support for float128 type (x86-64 only)
2003-01-05 13:36:53 +00:00
mazen
a835405a27 * fixed a compilation bug accmulator-->accumulator, in definition of return_result_reg 2002-11-17 18:26:15 +00:00
mazen
41153e2b1a + return_result_reg and function_result_reg are now used, in all plateforms, to pass functions result between called function and its caller. See the explanation of each one 2002-11-17 17:49:08 +00:00
carl
64655be168 * memory optimization (3-4%) : cleanup of tai fields,
cleanup of tdef and tsym fields.
  * make it work for m68k
2002-11-17 16:31:55 +00:00
peter
dcd9e0107c * old logs removed and tabs fixed 2002-09-07 15:25:00 +00:00
carl
c68b2dfbee * rename swatoperands to swapoperands
+ m68k first compilable version (still needs a lot of testing):
      assembler generator, system information , inline
      assembler reader.
2002-08-13 18:01:50 +00:00
carl
9da171faf2 + stab register indexes for powerpc (moved from gdb to cpubase)
+ tprocessor enumeration moved to cpuinfo
  + linker in target_info is now a class
  * many many updates for m68k (will soon start to compile)
  - removed some ifdef or correct them for correct cpu
2002-08-12 15:08:39 +00:00
carl
18b102ce95 + moved target_cpu_string to cpuinfo
* renamed asmmode enum.
  * assembler reader has now less ifdef's
  * move from nppcmem.pas -> ncgmem.pas vec. node.
2002-08-10 14:46:29 +00:00
florian
7bf1321808 * several fixes, small test units can be compiled 2002-07-25 22:55:33 +00:00
florian
52dbda43c3 + initial release of x86-64 target code 2002-07-24 22:38:15 +00:00
florian
6bbaa14daf * block nodes within expressions shouldn't release the used registers,
fixed using a flag till the new rg is ready
2002-04-25 20:15:39 +00:00
florian
37194d2f61 * fixed more problems with cpubase and x86-64 2002-04-25 16:12:09 +00:00