Jeppe Johansen
1c0c944311
Added x86_64-embedded target. Patch from Benjamin Rosseaux
...
git-svn-id: trunk@33097 -
2016-02-14 10:57:00 +00:00
nickysn
80b3e3020a
* the SEGFS and SEGGS prefixes are 386+
...
git-svn-id: trunk@32925 -
2016-01-11 15:51:40 +00:00
nickysn
741a3eedf9
* fixed the cpu level of several 186+ instructions, that were mistakenly marked as either 286+ or 8086+
...
git-svn-id: trunk@32921 -
2016-01-11 13:22:08 +00:00
nickysn
6037976202
* several imul variants, featuring 32-bit or 64-bit registers marked 386+, instead of 286+
...
git-svn-id: trunk@32889 -
2016-01-08 17:07:36 +00:00
nickysn
66bad5a1cf
* pushf and popf are 8086 level instructions, not 186+
...
git-svn-id: trunk@32677 -
2015-12-17 15:23:21 +00:00
sergei
eb86cd47c6
* tcgx86_64.g_proc_entry: Don't crash if 'list' is initially empty. Went unnoticed this far because ncgutil.gen_proc_entry_code adds some items before calling cg.g_proc_entry.
...
git-svn-id: trunk@32670 -
2015-12-16 11:13:24 +00:00
florian
a3964d9ee0
+ support for RDTSCP, resolves issue #28916
...
git-svn-id: trunk@32652 -
2015-12-13 13:28:51 +00:00
Jonas Maebe
a27927e658
* disable parameter struct padding for llvm, as llvm does that it by itself
...
(and interprets our padding as extra parameters)
git-svn-id: trunk@32554 -
2015-11-29 21:46:03 +00:00
Jonas Maebe
9fd4531e79
* fixed parameter allocation if there are fewer locations than the parameter
...
is long (e.g. if the last 4 bytes of a record is padding) -- not triggered
by default because we just extend the last parameter location to 8 bytes
in such a case, but can happen when we remove that for llvm
git-svn-id: trunk@32552 -
2015-11-29 21:45:57 +00:00
Jonas Maebe
126046dabf
* set the def for SSE 64 bit parameters to double instead of an
...
array of 2 singles
git-svn-id: trunk@32544 -
2015-11-27 14:44:32 +00:00
sergei
1b965e6766
* x86: Don't save/restore integer registers that are volatile per calling convention of current procedure. It implies that nothing will be saved for procedures with OLDFPCCALL, FAR16 and PASCAL and calling conventions. OLDFPCCALL restores behavior that was in effect before r25224.
...
git-svn-id: trunk@32542 -
2015-11-27 05:48:49 +00:00
sergei
a78250a78b
* x87 FBSTP and FBLD instructions cannot have size suffix in ATT syntax. Mantis #29095 .
...
git-svn-id: trunk@32541 -
2015-11-27 03:59:06 +00:00
Jonas Maebe
fa3b0ca312
* support marking defs created via the getreusable*() class methods as
...
"don't free even if not registered"; use for defs that may not be written
to a ppu file, but that must nevertheless survive the compilation of the
current module
* mark all defs created for para locations as "don't free even if not
registered", because we don't discard and recalculate all para locations
after a module has been compiled (since that's not needed)
o solves issues if the paralocations for a routine in the interface of
unit A are calculated while the implementation of unit B gets
compiled, and a new reusable type is allocated at that point which
is not used anywhere else (after r32160)
git-svn-id: trunk@32235 -
2015-11-04 20:46:18 +00:00
Jonas Maebe
4f7b4a2735
* changed {$ifdef x86} code in defcmp into virtual methods
...
git-svn-id: trunk@32180 -
2015-10-28 18:06:27 +00:00
florian
53ea4fb7d4
* unify x86 peephole optimizer helpers
...
git-svn-id: trunk@31843 -
2015-09-27 09:36:39 +00:00
svenbarth
529677cc79
ncal.pas:
...
* extend tcallnode with the ability to pass a tspecializationcontext so that tcallcandidates can do a final specialization
* the final procdef is registered at the end of tcallnode.pass_typecheck
git-svn-id: trunk@31763 -
2015-09-18 14:48:54 +00:00
yury
47b316d0e2
* Removed unused vars for x86-64 compiler.
...
git-svn-id: trunk@31744 -
2015-09-17 15:26:31 +00:00
sergei
e542800ea9
* Win64 SEH: Track control flow out of unwind-protected regions in a more precise way and don't generate expensive calls to __fpc_local_unwind when not necessary.
...
git-svn-id: trunk@31582 -
2015-09-09 18:43:46 +00:00
Jeppe Johansen
3cb9be73bc
Moved tcontrollerdatatype out into cpuinfo.
...
Added cputype and fputype info to tcontrollerdatatype arrays.
git-svn-id: trunk@31574 -
2015-09-07 20:36:54 +00:00
sergei
5cfeaedd23
* Fixed copy&paste error introduced in r24398, resolves #28584 .
...
git-svn-id: trunk@31475 -
2015-09-01 14:06:02 +00:00
Jonas Maebe
1bcc276dcf
* remove implicit typecast to extended automatically inserted for trunc/round
...
(due to the declaration in the system unit) on x86_64 if this allows us
to use SSE code instead (mantis #28366 )
git-svn-id: trunk@31192 -
2015-07-03 21:01:18 +00:00
Károly Balogh
f0ccbc87f2
AROS/x86_64: enable syscalls code in the parser, fix EAX->RAX reference base while calculating syscall offset
...
git-svn-id: trunk@31172 -
2015-06-28 23:04:51 +00:00
Károly Balogh
7ca62febcd
AROS/x86_64: initial AROS/x86_64 support and implement syscalls for AROS/x86_64
...
git-svn-id: trunk@31169 -
2015-06-28 19:16:40 +00:00
Jonas Maebe
f40ea04540
* changed getarraydef() into a tarraydef.getreusable() class method
...
git-svn-id: trunk@31147 -
2015-06-23 21:23:18 +00:00
Jonas Maebe
f402b0d7df
* changed getpointerdef() into a tpointerdef.getreusable() class method
...
o allows removing the ugly x86 hacks
git-svn-id: trunk@31144 -
2015-06-22 08:17:49 +00:00
Jonas Maebe
6e5af0b31e
* don't replace classrefdef with i64 in parameter locations (so llvm can use
...
the type information)
git-svn-id: trunk@30787 -
2015-05-03 16:51:23 +00:00
florian
7dd1d6aa77
o fixes handling of iso i/o parameters/program parameters:
...
* explicit reset is needed
* variable must be declared again
git-svn-id: trunk@30757 -
2015-05-01 20:58:31 +00:00
Jonas Maebe
61e4a1b811
+ added tasmlist parameter to getintparaloc() (needed for llvm)
...
git-svn-id: trunk@30429 -
2015-04-04 14:29:16 +00:00
Jonas Maebe
687bb15299
* renamed getdatalabel() to getglobaldatalabel
...
git-svn-id: branches/hlcgllvm@30336 -
2015-03-27 21:25:34 +00:00
Jonas Maebe
bd203a5b57
* synchronised with trunk till r30240
...
git-svn-id: branches/hlcgllvm@30241 -
2015-03-15 19:44:58 +00:00
florian
331ace25c6
* handle undefineddef in classify_argument, resolves #27658
...
git-svn-id: trunk@30239 -
2015-03-15 16:19:58 +00:00
Jonas Maebe
3d9713b9c8
* has_single_field() now looks recursively into fields that are aggregate
...
types until it finds a non-aggregate type, and then returns "true" if
that aggregate (record or array) contains one element
* it now also returns the type of that element directly rather than a
tfieldvarsym, since we only care about the type and in case of an array
there is no field
git-svn-id: trunk@30205 -
2015-03-14 18:35:53 +00:00
Jeppe Johansen
914e9e7b49
Merged from trunk
...
git-svn-id: branches/laksen/armiw@30146 -
2015-03-08 12:33:46 +00:00
Jonas Maebe
67b8aceaee
* synchronized with privatetrunk till r30095
...
git-svn-id: branches/hlcgllvm@30101 -
2015-03-05 20:32:15 +00:00
florian
99635658ec
* corrects change flags for VSQRTSD
...
git-svn-id: trunk@30037 -
2015-02-28 22:42:25 +00:00
Jonas Maebe
79a06b1514
+ iphonesim/x86_64 target (64 bit iOS simulator)
...
git-svn-id: trunk@29970 -
2015-02-23 22:56:09 +00:00
florian
de17e9fa1c
+ cpu capability CPUX86_HAS_CMOV
...
git-svn-id: trunk@29776 -
2015-02-21 20:47:40 +00:00
florian
d6e4af8279
+ applied remaining patches of Torsten Grundke: adds gather instructions of avx2
...
git-svn-id: trunk@29745 -
2015-02-17 21:43:46 +00:00
Jeppe Johansen
47dbec3111
Rebase to trunk revision
...
git-svn-id: branches/laksen/armiw@29708 -
2015-02-15 16:08:18 +00:00
florian
35a04ad095
* modified patch of Paul W to replace leave by mov/pop, resolves #26455
...
git-svn-id: trunk@29633 -
2015-02-05 20:51:12 +00:00
pierre
c7e939b243
Add x86_64-solaris to the list of supported targetss for as_x86_64_elf64 binary writer
...
git-svn-id: trunk@29574 -
2015-01-28 22:52:01 +00:00
sergei
ed4e876f4f
* Generate exception filters data on i386-win32 and x86_64-win64 without using global labels.
...
git-svn-id: trunk@29512 -
2015-01-20 13:52:19 +00:00
Jeppe Johansen
901275b4a1
Switch back to emitting BLX instructions and fix calculation of constant offsets(should rarely/never happen).
...
Add missing fields to other elf targets.
git-svn-id: branches/laksen/armiw@29286 -
2014-12-14 16:28:35 +00:00
marco
2578514853
* first dragonfly patch (existing most). Mantis #27091
...
git-svn-id: trunk@29213 -
2014-12-07 20:27:02 +00:00
florian
5c67fcc43f
+ change always floating point divisions into multiplications if they are a power of two,
...
this is an exact operation so it is always allowed
* change only divisions by normal numbers into multiplications
git-svn-id: trunk@29085 -
2014-11-16 20:47:38 +00:00
sergei
8f05f8c839
- Forgot to commit with r29081
...
git-svn-id: trunk@29082 -
2014-11-16 17:29:52 +00:00
Tomas Hajny
3ee3542744
* boolean constant instead of IFDEFs for detection of microcontroller support
...
git-svn-id: trunk@29052 -
2014-11-10 12:34:59 +00:00
Jonas Maebe
d8c898742a
* handle the fact that records containing a single extended value are
...
returned on the x87 fpu stack on x86-64
o also handle the fact that this means that we'll generated float
loads/stores with OS_128/OS_F128 in case the surrounding record
is padded to a multiple of its alignment
git-svn-id: trunk@28985 -
2014-11-04 21:16:27 +00:00
Jonas Maebe
6712954607
* correctly handle X86_64_X87UP_CLASS getting merged with another class and
...
becoming X86_64_SSE_CLASS/X86_64_INTEGER_CLASS/... This is not defined in
the ABI because there sizeof(extended)=16 and hence the class of the upper
eightbyte of the extended value can never be merged with the class of
another field (except in a union, but then the class of the lower
eightbyte will also be overwritten).
Handle it the same as when the lower eightbyte class of an extended in an
aggregate gets changed into something else: pass everything in memory
(part of mantis #26993 )
git-svn-id: trunk@28984 -
2014-11-04 21:16:24 +00:00
Jonas Maebe
8244d366d0
- moved deallocation of NR_PIC_OFFSET_REG from the x86_64 to the i386 code
...
generator (as it's also allocated for i386 rather than for x86_64)
git-svn-id: trunk@28928 -
2014-10-25 17:47:44 +00:00