Jonas Maebe
687bb15299
* renamed getdatalabel() to getglobaldatalabel
...
git-svn-id: branches/hlcgllvm@30336 -
2015-03-27 21:25:34 +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
pierre
da55d9ded2
Also disable overflow where range check is disabled in aasmcpu unit
...
git-svn-id: trunk@29989 -
2015-02-24 15:58:49 +00:00
Jonas Maebe
2ab7f5c35d
* moved x86-specific requirements from the generic bsr/bsf code to the
...
x86 code generator (register size constraints)
git-svn-id: trunk@29984 -
2015-02-23 22:57:18 +00:00
Jonas Maebe
fa328436ab
* regenerated for iphonesim/x86-64
...
git-svn-id: trunk@29974 -
2015-02-23 22:56:41 +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
Jonas Maebe
d6de2c03cb
* generic part of r26050 from the hlcgllvm branch: made tcgvecnode hlcg-safe
...
o in particular, add tdef size information to the update_reference*()
methods, and factored out offset adjustments into its own method
o also make sure the passed size to update_reference*() corresponds to the
actual size of the index, as it's no longer guaranteed to be ptruint
since the previous commit
git-svn-id: trunk@29967 -
2015-02-23 22:56:00 +00:00
Jonas Maebe
1a949eae1f
* fixed i8086 compilation
...
git-svn-id: trunk@29807 -
2015-02-23 08:51:59 +00:00
florian
5946328ed6
* CPUs not having CMOV apparently do not support the newly introduced Multibyte NOPs (Agner, Optimizing subroutines in assembly
...
language, An optimization guide for x86 platforms, Page 87), so restored the 32 Bit part of the old alignment
bytes for use on those old CPUs and use it depending on the CPU switches
git-svn-id: trunk@29777 -
2015-02-21 20:50:42 +00:00
florian
de17e9fa1c
+ cpu capability CPUX86_HAS_CMOV
...
git-svn-id: trunk@29776 -
2015-02-21 20:47:40 +00:00
florian
255c4feef6
* new code alignment fillings based on the discussion at http://www.lazarusforum.de/viewtopic.php?f=10&t=8487
...
git-svn-id: trunk@29772 -
2015-02-21 10:09:39 +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
florian
7c1cf07484
+ support section smartlinking with nasm
...
+ set alignment for smartlinked sections in nasm
* enable section smartlinking for nasm/coff win32
git-svn-id: trunk@29654 -
2015-02-08 12:33:50 +00:00
nickysn
2d3ab816b0
* Tcgx86.g_concatcopy use: copy_move (mov sequence) instead of copy_string (rep
...
movsb) when copying a 4 byte block on i8086, when optimizing for size. 4 movs
are usually shorter than the instructions needed to setup rep movsb and also
greatly reduce register pressure. This fixes i8086 snapshot building with -Os,
Mantis #27387
git-svn-id: trunk@29639 -
2015-02-07 13:19:34 +00:00
florian
632f43c490
* fix assembling with masm according to #25858
...
git-svn-id: trunk@29635 -
2015-02-05 21:22:39 +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
sergei
d24382e8f8
* x86 AT&T writer: never ever drop "@GOTPCREL" relocation, because it results in corrupted code (at least, "mov foo@GOTPCREL(%rip),%reg" must change to "lea foo(%rip),%reg" to remain equivalent, but this must be handled elsewhere anyway. Assembler writer should just write generated code as is).
...
* Added internal errors on some impossible types of references.
git-svn-id: trunk@29506 -
2015-01-18 17:04:53 +00:00
florian
29d4037a9c
* make integer division instruction (div/idiv) on x86 dependent on the
...
resulttype of the div node set by the type checking pass, this is
also how the generic code generator handles it, resolves #27173
git-svn-id: trunk@29382 -
2015-01-04 13:08:57 +00:00
florian
d540d56908
* unified internal errors
...
git-svn-id: trunk@29280 -
2014-12-13 11:46:59 +00:00
marco
2578514853
* first dragonfly patch (existing most). Mantis #27091
...
git-svn-id: trunk@29213 -
2014-12-07 20:27:02 +00:00
sergei
475a9e1617
* Asm readers: allow using procedure symbols in references, resolves #22376 .
...
* rax86int.pas: reject RIP-relative references to locals/parameters.
git-svn-id: trunk@29087 -
2014-11-17 05:34:55 +00:00
sergei
42d251da1c
- x86 assembler readers: cleaned out operand swapping code. Operands of TInstruction are kept in AT&T order, Intel reader attaches operands right-to-left. It was effectively the same way before the change (except Intel reader attaching operands left-to-right, followed by a single swap), operand order checks all over the place were just reducing readability.
...
git-svn-id: trunk@29081 -
2014-11-16 16:37:26 +00:00
Jonas Maebe
5c8ae259c4
* handle GOT-relative loads in the assembler reader as reads of
...
sizeof(pint) bytes (mantis 23109)
git-svn-id: trunk@28789 -
2014-10-08 18:38:06 +00:00
florian
ed11244632
* improved formatting
...
git-svn-id: trunk@28742 -
2014-10-04 17:52:17 +00:00
sergei
de42f2f2f7
* Fixed handling of sign in constant expressions in Intel x86 assembler reader. Mantis #26668 .
...
git-svn-id: trunk@28731 -
2014-10-03 15:51:38 +00:00
florian
8635894de4
* merged new changes to avx2 branch (AVX2 vectory-memory support) by Torsten Grundke
...
git-svn-id: trunk@28527 -
2014-08-27 21:06:23 +00:00
Károly Balogh
dd67fa8c5c
* fixed DFA warnings for i8086
...
git-svn-id: trunk@28504 -
2014-08-20 15:49:27 +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
Károly Balogh
249a60b28b
x86: fix a variable op not initialized warning. This hopefully fixes our x86 testsuite run.
...
git-svn-id: trunk@28496 -
2014-08-20 10:21:06 +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
Károly Balogh
74581a07af
AROS: assembler fixes
...
git-svn-id: trunk@28439 -
2014-08-18 11:25:55 +00:00
Jonas Maebe
5c75b6dd6b
* synchronised with trunk up till r28402
...
git-svn-id: branches/hlcgllvm@28403 -
2014-08-13 16:04:30 +00:00
florian
499dd078e3
+ automatically insert fma inlines into floating point code if possible and fastmath is activated
...
git-svn-id: trunk@28382 -
2014-08-11 20:50:21 +00:00
nickysn
94bcb9878a
* reimplemented r28329 in a different way, as suggested by Jonas
...
git-svn-id: trunk@28332 -
2014-08-07 19:36:52 +00:00
nickysn
dfcbe03572
+ added x86-specific function getx86pointerdef, similar to getpointerdef, but
...
allows creating the x86 special pointer types as well
git-svn-id: trunk@28329 -
2014-08-07 08:50:01 +00:00
Jonas Maebe
7949bebb8d
* synchronised with r28168 of trunk
...
git-svn-id: branches/hlcgllvm@28169 -
2014-07-05 21:30:28 +00:00
Jonas Maebe
b0ff41406a
* grouped all tai_real* types into a single tai_realconst type,
...
to free up space for more ait_* types in taitype (can't have
more than 32 because they have to fit in a small set)
o factored out writing of floating point numbers as an array of
byte in the external assemblers
git-svn-id: branches/hlcgllvm@28105 -
2014-07-01 16:29:58 +00:00
nickysn
9b560ffd64
* x86 intel syntax inline asm: allow a segment override (segcs,segds,seges,etc.)
...
to be followed by an instruction on the same line as the override
git-svn-id: trunk@28066 -
2014-06-25 21:06:19 +00:00
nickysn
36d6fb7868
* don't add the stack segment declaration at the beginning of each object file
...
in the i8086 far data memory models as well
git-svn-id: trunk@28022 -
2014-06-21 10:41:57 +00:00
nickysn
ef88fec688
* nested ifdefs in TX86NasmAssembler.WriteHeader replaced with an 'if defined()'
...
sequence
git-svn-id: trunk@28019 -
2014-06-21 08:28:15 +00:00
nickysn
40b2d3d562
* don't add the heap segment declaration at the beginning of each object file in
...
the i8086 far data memory models
git-svn-id: trunk@28018 -
2014-06-21 08:15:18 +00:00
nickysn
7cfd7a66cd
+ create a special 'heap' segment with reserved space equal to heapsize (i.e.
...
the value set by -Ch or the second parameter to the $M directive). This is
equivalent to the heapmin value in Turbo Pascal 7 and ensures that the program
has at least this amount of heap space available (otherwise DOS will show a
'not enough memory' error and will refuse to load the program).
git-svn-id: trunk@28002 -
2014-06-19 14:14:01 +00:00
nickysn
22a7dfa231
* stack segment moved outside of dgroup in the i8086 far data memory models, so
...
it no longer eats from the precious 64kb limit for static data
git-svn-id: trunk@27959 -
2014-06-14 19:34:36 +00:00
nickysn
2dc8839af5
* set class=data to all data segments/sections on i8086
...
git-svn-id: trunk@27957 -
2014-06-14 16:01:22 +00:00
sergei
05ecd3cec1
* One more fix of operand size, likely harmless because shift amount is taken modulo bit-width anyway.
...
git-svn-id: trunk@27955 -
2014-06-14 13:31:48 +00:00
sergei
be6d6d90d7
+ Division-by-constant optimization for x86_64 (merged i386 code adapted for different operand sizes, so the result should be suitable for i386 as well).
...
git-svn-id: trunk@27945 -
2014-06-13 12:32:45 +00:00
sergei
e7cd5319f0
* Put under {$ifndef x86_64} more cases of instructions that do not exist in 64-bit mode.
...
git-svn-id: trunk@27933 -
2014-06-11 12:51:38 +00:00
sergei
c28271ab99
* NASM writer: don't force 'near' size for all non-far branches and calls, it disables NASM's capability to optimize branches into short form where possible, and thus only increases size of generated code.
...
- LDS and LES instructions do not exist on x86_64.
git-svn-id: trunk@27932 -
2014-06-11 12:32:21 +00:00