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
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
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
sergei
dc628b8969
* x86: Completely skip instructions that do not exist for target CPU bit width. The existing behavior of writing mnemonics and properties but no encoding allows an invalid instruction to be recognized by assembler reader or even generated by compiler, but it but won't assemble anyway.
...
git-svn-id: trunk@27934 -
2014-06-11 22:31:40 +00:00
sergei
b594eee70b
* Moved x86_64 mod/div code to x86, with minimal changes to ensure it compiles on i386/i8086. Merging optimized division-by-const code from i386 is pending...
...
git-svn-id: trunk@27930 -
2014-06-11 01:42:46 +00:00
florian
2fa066b003
* optimize vmovaps/vmovapd after avx instructions
...
git-svn-id: trunk@27712 -
2014-05-01 19:20:35 +00:00
florian
d88d644925
+ support for FMA intrinsic: if there is no hardware support, the compiler throws an error.
...
Currently it is implemented only for x86-CPUs supporting the FMA extension. While it would
be possible to implement it in software or simulate fma(<single>,<single>,<single>) using
double operations, it makes no sense in my opinion to do so.
git-svn-id: trunk@27564 -
2014-04-13 19:21:54 +00:00
svenbarth
02495c17bd
Fix a typo. The CPU specific version of "ttypesym" should be called "tcputypesym" and not "tcpuypesym".
...
git-svn-id: trunk@27531 -
2014-04-11 14:30:59 +00:00
Jonas Maebe
d452686c39
* moved pbestrealtype from symdef to symcpu
...
git-svn-id: trunk@27441 -
2014-04-01 21:41:37 +00:00
sergei
8c693a3300
* Win64 apparently expects records with single field of floating-point type to be passed the same way as that only field, i.e. in xmm register. Fixes tests/cg/tcalext6.pp.
...
git-svn-id: trunk@27431 -
2014-04-01 17:04:47 +00:00
Jonas Maebe
338c064beb
* moved x86-specific tpointerdef functionality to architecture-specific
...
descendants
git-svn-id: trunk@27397 -
2014-03-30 21:04:36 +00:00
Jonas Maebe
dae5d1ff62
+ added class reference types of the architecture-specific t*def/t*sym
...
classes
git-svn-id: trunk@27396 -
2014-03-30 21:04:32 +00:00
Jonas Maebe
b57c95043f
+ support overriding tdef/tsym methods with target-specific functionality:
...
o made all (non-abstract) tdef and tsym constructors virtual
o added c*def/c*sym classref types for every (non-abstract) t*def/t*sym
class
o added cpusym unit for every architecture that derives a tcpu*def/tcpu*sym
class from the base classes, and initialises the c*def/c*sym classes with
them. This is done so that the llvm target will be able to derive from
the tcpu*def/sym classes without umpteen ifdefs, and it also means that
the WPO can devirtualise everything because the c* variables are only
initialised with one class type
o replaced all t*def/t*sym constructor calls with c*def/c*sym constructor
calls
git-svn-id: trunk@27361 -
2014-03-29 22:31:55 +00:00
florian
842e027a9f
+ prove of concept how FMA4 could be supported in inline assembler
...
git-svn-id: trunk@27214 -
2014-03-20 21:25:38 +00:00
florian
a79be2b05c
+ support for FMA instructions in inline assembler
...
+ extended avx test code with FMA
git-svn-id: trunk@27209 -
2014-03-20 20:06:56 +00:00
florian
aa107b914c
* merged avx2 branch, developed by Torsten Grundke
...
git-svn-id: trunk@27200 -
2014-03-20 12:03:52 +00:00
florian
0e5cf6529e
+ peephole optimizations AndMovzToAnd, MovMov2Mov1 and MovMov2MovMov1 for x86-64
...
git-svn-id: trunk@27181 -
2014-03-18 21:54:42 +00:00
sergei
3fb304cbe2
- Removed Win64 SEH code specific to results of managed types returned in registers. Since r26228 managed types are always returned in parameters.
...
git-svn-id: trunk@27162 -
2014-03-16 15:48:49 +00:00
sergei
2c02e8a726
- i386, x86_64, SPARC: removed paramanager.getintparaloc overrides, it is handled by generic implementation since r24716.
...
(This probably can be removed for all targets, but I don't want to do it without prior testing).
git-svn-id: trunk@26870 -
2014-02-24 16:01:14 +00:00
florian
13cb468a8e
* fixed modification information for some avx instructions
...
git-svn-id: trunk@26840 -
2014-02-22 15:52:33 +00:00
florian
0d6cc46a5e
+ CPU type corei
...
git-svn-id: trunk@26790 -
2014-02-16 08:27:27 +00:00
florian
be0a29da95
* fix modification information for bmi instructions
...
git-svn-id: trunk@26738 -
2014-02-08 21:38:21 +00:00
florian
53ddaf03ff
* fixes masking error in tx8664shlshrnode.pass_generate_code
...
* cleaned up tx8664shlshrnode.pass_generate_code and fix register loading of the right node, resolves #25664
git-svn-id: trunk@26716 -
2014-02-08 10:15:47 +00:00
Jonas Maebe
a1eb9a0f99
* fixed spilling of CMOVcc instruction: it "reads" operand two (in the sense
...
that the value of operand two is used/kept in case the condition is false)
(fixes mantis #25672 )
git-svn-id: trunk@26674 -
2014-02-05 00:27:21 +00:00
Jonas Maebe
6a4afd3a33
* changed uses of "exit" in constructors to if/then constructs, to
...
avoid the constructor result/SSA bug in 2.6.x
git-svn-id: trunk@26651 -
2014-02-02 09:09:51 +00:00
florian
28a8dc42c6
* fix tcgx86.a_op_reg_reg on x86-64 and make use of it
...
git-svn-id: trunk@26636 -
2014-01-30 20:24:41 +00:00
florian
d8c0f11ff9
+ cs_userbp optimizer switch, so on x86-64 the compiler can make use of rbp if it is not needed as frame pointer
...
git-svn-id: trunk@26633 -
2014-01-30 19:44:17 +00:00
florian
a3f58e84be
* rbp can be used for normal purpose under certain conditions so it shouldn't interfere with all other registers
...
git-svn-id: trunk@26632 -
2014-01-30 19:44:14 +00:00
florian
8989a40b4f
* more flags to mark changes fixed
...
git-svn-id: trunk@26626 -
2014-01-30 17:34:28 +00:00
Jonas Maebe
859676d7d3
* fixed r26519 for darwin/x86-64, see comments (mantis #25644 )
...
git-svn-id: trunk@26618 -
2014-01-29 21:26:45 +00:00
florian
060aa2a7fe
+ SSE and AVX unit cpu flags
...
git-svn-id: trunk@26587 -
2014-01-26 12:37:52 +00:00
florian
2ec5a649d7
* set Ch_* for more operations
...
* Ch_* flags for VMOVSD and VMOVSS are now set for the 2 operand variants
git-svn-id: trunk@26586 -
2014-01-26 12:37:50 +00:00
pierre
42140bd11f
Add forgotten new file, should fix bug report 25571
...
git-svn-id: trunk@26554 -
2014-01-21 14:17:29 +00:00
pierre
3327d508ee
Enable nasm assembler for x86_64 cpu
...
git-svn-id: trunk@26548 -
2014-01-21 00:26:49 +00:00
sergei
ca58cc1d64
+ x86_64: generate position-independent case jump tables (twice smaller than absolute ones and do not require dynamic relocations in .dll/.so).
...
git-svn-id: trunk@26519 -
2014-01-19 15:41:05 +00:00
florian
a752e3542d
+ more x86 cpu flags
...
git-svn-id: trunk@26513 -
2014-01-18 21:03:09 +00:00
florian
7028210817
+ tzcnt assembler instruction
...
git-svn-id: trunk@26506 -
2014-01-18 12:11:50 +00:00
nickysn
2459518bdd
* use IMUL even for unsigned multiplication on x86_64, when overflow checking is
...
off
git-svn-id: trunk@26499 -
2014-01-18 03:36:15 +00:00
florian
e210d5f30e
+ cpu_capabilites for x86_64 and i386
...
* take advantage of bmi2 instruction rorx
git-svn-id: trunk@26482 -
2014-01-16 21:47:28 +00:00
sergei
1ee9373fa6
* Changed function create_pd into method of ttryfinallynode, so it can be reused for Win32 SEH and, in the future, for DWARF-based exception handling on other targets.
...
* Additional two minor changes: reset po_delphi_nested_cc on result, so it is independent of current {$modeswitch nestedprocvar} state, and removed call to alloc_proc_symbol (which belongs to pass 2).
git-svn-id: trunk@26222 -
2013-12-12 08:38:06 +00:00
sergei
f508442a7e
* Emit everything to the same asmlist (fixing copy-paste error).
...
git-svn-id: trunk@26187 -
2013-12-06 07:10:39 +00:00
florian
e914612423
* the win64 exception handling code messes with asm nodes, so mark the helper procedure that they contain assembler
...
git-svn-id: trunk@26162 -
2013-12-01 17:02:13 +00:00
florian
4d5119bf1c
* fixes several issues which cause warnings by the dfa code when using it to detect uninitialized variables
...
git-svn-id: trunk@26161 -
2013-12-01 17:02:08 +00:00
sergei
409e176ded
* Factored reusable (SEH-related) piece of code into separate procedure.
...
git-svn-id: trunk@26157 -
2013-12-01 11:47:12 +00:00