sergei
0f301b4c57
* Fixed spilling info for vcvt* instructions, part of Mantis #29783 .
...
git-svn-id: trunk@33208 -
2016-03-09 16:36:30 +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
florian
a3964d9ee0
+ support for RDTSCP, resolves issue #28916
...
git-svn-id: trunk@32652 -
2015-12-13 13:28:51 +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
yury
78b4950b97
* Fixed calling of external procs for i386 non-darwin targets when PIC is enabled.
...
git-svn-id: trunk@32536 -
2015-11-26 17:04:55 +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
yury
6537b99ac3
* i386: Fixed detection of a peephole optimization using CMOV.
...
git-svn-id: trunk@32115 -
2015-10-21 15:59:12 +00:00
yury
862348c317
* Keep the GOT offset in a virtual register for i386 non-darwin platforms.
...
It fixes PIC code generation with GOT for i386 with enabled optimizations. Bugs #28667 , #28668 .
Prior the fix I have not been able to compile even RTL with -O2 due to not enough free registers, since EBX is reserved for GOT.
It can be further optimized to teach register allocator to not spill the GOT register if possible.
git-svn-id: trunk@32020 -
2015-10-12 08:02:56 +00:00
florian
c40240990e
* popt386 uses now also all routines of aoptx86
...
git-svn-id: trunk@31894 -
2015-09-29 19:31:33 +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
Jonas Maebe
3c6aa91a96
* factored out the loading of threadvars in its own method, and put the
...
x86-specific part in nx86ld
git-svn-id: trunk@31639 -
2015-09-12 23:32:53 +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
Jonas Maebe
0fc1fd6ac1
* replaced current_procinfo.currtrue/falselabel with storing the true/false
...
labels of LOC_JUMP in the node's location. This generates some extra jumps
for short circuit boolean and/or-expressions if optimizations are off, but
with optimisations enabled the generated code is the same (except for JVM
because the jump threading optimisation isn't enabled there yet).
git-svn-id: trunk@31431 -
2015-08-27 18:28:57 +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
florian
956883b0c7
* pass dyn. arrays in registers when i386 register calling conventions are used
...
git-svn-id: trunk@30870 -
2015-05-16 20:27:09 +00:00
Jonas Maebe
a04cae2c4b
- removed partial Alpha, IA64 and vis backends since they were never nor
...
will likely ever be finished
git-svn-id: trunk@30836 -
2015-05-09 17:25:11 +00:00
Jonas Maebe
1b43930749
- removed long deprecated/buggy assembler cse optimiser for i386
...
o bumped ppu version because optimiser settings can be embedded in generic
token streams
git-svn-id: trunk@30835 -
2015-05-09 17:25:07 +00:00
florian
9f587625e7
+ handle not and neg in isFoldableArithOp as well
...
git-svn-id: trunk@30767 -
2015-05-02 17:20:20 +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
bd203a5b57
* synchronised with trunk till r30240
...
git-svn-id: branches/hlcgllvm@30241 -
2015-03-15 19:44: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
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
Tomas Hajny
cfd4252ec3
* EMX should be treated the same way as OS/2 with regard to cdecl (the same C compiler is used)
...
git-svn-id: trunk@29660 -
2015-02-09 22:52:06 +00:00
florian
06fd4223e9
+ optimization setting level4
...
+ change tail calls into jmp if a ret without constant follows
git-svn-id: trunk@29653 -
2015-02-08 11:24:30 +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
56f53176e7
Add freebsd, openbsd and OS2 to the list of i386 targets handling records with only one float as normal float
...
git-svn-id: trunk@29570 -
2015-01-27 22:52:00 +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
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
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
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
Tomas Hajny
09e0734b7c
* fix working with short record function results under OS/2
...
git-svn-id: trunk@28885 -
2014-10-20 15:40:17 +00:00
pierre
aa6b62cf4c
Add new procedure option: po_syscall_has_libsym,
...
include this option only of libsym field
is non NIL.
Use this option to only write redef of libsym if needed.
Adapt ppudump source to this new procedure option.
git-svn-id: trunk@28732 -
2014-10-03 19:26:16 +00:00
sergei
5479b6e722
* Provide initialization of all variables, fixes cycling with OPT="-dTEST_WIN32_SEH -OoDFA".
...
git-svn-id: trunk@28622 -
2014-09-08 18:08:12 +00:00
Károly Balogh
07ad2a04ac
* fix warnings when compiling the compiler with DFA optimizer enabled on i386
...
git-svn-id: trunk@28497 -
2014-08-20 12:28:44 +00:00
Jonas Maebe
b18ba8e85b
* syncrhonised with trunk up till r28471
...
git-svn-id: branches/hlcgllvm@28495 -
2014-08-19 20:23:11 +00:00
Jonas Maebe
b745dcc64c
* moved g_external_wrapper() to the hlcg, and also g_intf_wrapper() because
...
for some platforms it depends on that routine
git-svn-id: branches/hlcgllvm@28492 -
2014-08-19 20:22:54 +00:00
Jonas Maebe
a637fbe596
* moved all g_exception_*() methods to hlcgobj and cleaned them up (no more
...
hardcoded registers for the most part)
+ added extra g_exception_discard_reason() that can be called when we only
want to get rid of the currently pushed exception reason, and don't have
to load it (so it can do nothing on platforms that don't use push/pop)
git-svn-id: branches/hlcgllvm@28481 -
2014-08-19 20:22:24 +00:00
Károly Balogh
4ee15b84da
AROS: syscall (library call) support for based on the Amiga/68k and MorphOS/PPC versions
...
git-svn-id: trunk@28463 -
2014-08-19 00:39:18 +00:00
Károly Balogh
74581a07af
AROS: assembler fixes
...
git-svn-id: trunk@28439 -
2014-08-18 11:25:55 +00:00