J. Gareth "Curious Kit" Moreton
83969d3ba3
* x86: Added BEXTR and BZHI to special spilling rules since they follow the same format as SHRX etc.
2022-09-10 19:10:55 +00:00
Yuriy Sydorov
e9acd759a4
* Fixed random AVs when targeting the AVX FPU.
2021-12-12 18:19:35 +02:00
florian
7811b915a9
* x86-64: we can spill replace 32 bit operations if the operation does not modify a register
...
git-svn-id: trunk@49097 -
2021-03-31 21:23:22 +00:00
florian
90710d055b
* fix spilling of (v)min/max/s/ps/d operations
...
git-svn-id: trunk@48856 -
2021-03-01 20:29:58 +00:00
florian
de36d6c049
+ added newly used opcodes to avx_opcode_only_op0_may_be_memref
...
git-svn-id: trunk@48070 -
2021-01-04 21:54:36 +00:00
florian
d9eddc50fd
* fix spilling for PAND, POR and PXOR, resolves #37084
...
git-svn-id: trunk@45388 -
2020-05-16 15:51:48 +00:00
Jeppe Johansen
135a88c888
movhlps/movlhps only take xmm registers.
...
Handle spilling of SSE registers.
git-svn-id: trunk@44272 -
2020-03-06 17:19:51 +00:00
Jonas Maebe
281b3ad276
* fix case completeness and unreachable code warnings in compiler that would
...
be introduced by the next commit
git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
florian
b1dff29cbf
* removed unused units
...
git-svn-id: trunk@36165 -
2017-05-09 19:53:14 +00:00
florian
a8ba81a585
* unused data structure removed
...
git-svn-id: trunk@35523 -
2017-03-05 08:13:34 +00:00
florian
41b028ffc0
* unpcklp* require aligned memory, so do not spill replace their first operand by a memory location, resolves #31332
...
git-svn-id: trunk@35400 -
2017-02-05 20:59:54 +00:00
florian
180e0e7561
* avoid spilling of 2nd and 3rd operand of avx instructions
...
git-svn-id: trunk@33877 -
2016-06-01 20:48:08 +00:00
Jonas Maebe
7949bebb8d
* synchronised with r28168 of trunk
...
git-svn-id: branches/hlcgllvm@28169 -
2014-07-05 21:30:28 +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
1c7a5d5adc
* x86: fix spilling of sqrtss and sqrtsd instructions, they cannot have memory as destination.
...
git-svn-id: trunk@27810 -
2014-05-22 07:19:13 +00:00
Jonas Maebe
e9268a0a14
* synchronised with trunk up till r26975
...
git-svn-id: branches/hlcgllvm@26976 -
2014-03-06 21:36:58 +00:00
florian
75a13f7e47
* do not allow VCOMISD/VCOMISS to use a memory location as target
...
git-svn-id: trunk@26774 -
2014-02-14 21:26:51 +00:00
florian
a8643410c4
* fix trgx86.do_spill_replace for bmi rotating/shifting instructions
...
git-svn-id: trunk@26739 -
2014-02-08 21:38:23 +00:00
florian
9d84b83475
* fix comment
...
git-svn-id: trunk@26737 -
2014-02-08 21:38:18 +00:00
nickysn
c83032992d
* more fixes to the 3-op IMUL spilling:
...
o Return the correct operation type for all forms of IMUL in
taicpu.spilling_get_operation_type
o Properly support 3-op IMUL in trgx86.do_spill_replace
git-svn-id: trunk@26514 -
2014-01-18 21:46:13 +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
Jonas Maebe
5ef93e85b8
+ added extra "orgsupreg" parameter to do_spill_read/do_spill_written/
...
do_spill_replace routines, will be necessary by llvm register
allocator to determine the tdef corresponding to that register
* replaced uses of taicpu with tai_cpu_abstract_sym in the register
allocator so that it can work both with taicpu and taillvm instructions
git-svn-id: branches/hlcgllvm@26043 -
2013-11-11 11:15:43 +00:00
florian
f56d2d4b09
* be able to replace lea by add when spilling
...
git-svn-id: trunk@25901 -
2013-11-01 19:01:20 +00:00
florian
e81d2d1f3b
* basic avx support for floating point operations (use -Cfavx to activate)
...
git-svn-id: trunk@24896 -
2013-06-14 20:03:01 +00:00
nickysn
2a9d38d878
+ proper spilling support for R_SUBH (i.e. AH,BH,CH,DH) x86 registers in trgx86.do_spill_replace
...
git-svn-id: trunk@24476 -
2013-05-09 11:57:00 +00:00
sergei
1579583484
* COMISD (and COMISS, too) instruction cannot have memory reference as destination, Mantis #22150 .
...
git-svn-id: trunk@21432 -
2012-05-29 14:43:01 +00:00
sergei
b3335abe75
* MOVSXD destination operand cannot be in memory, resolves #20850 .
...
git-svn-id: trunk@19848 -
2011-12-13 22:56:24 +00:00
florian
ca1f33aae1
* extended do_spill_replace with some sse instructions
...
git-svn-id: trunk@18788 -
2011-08-20 12:29:41 +00:00
florian
66a8dd1e32
* cmov cannot use memory location as destination, fixed spiling code, resolves #19201
...
git-svn-id: trunk@17359 -
2011-04-21 13:51:45 +00:00
Jonas Maebe
99a75c56fc
* fixed copy-paste error in r15600
...
* fixed spilling error after r15600 the same register appears twice in an
instruction (it was spilled once in that case)
git-svn-id: trunk@15601 -
2010-07-18 21:24:52 +00:00
Jonas Maebe
a75016e67b
* make sure that registers are of the right type before calling get_alias
...
on them (could cause crashes or, in very rare instances, wrong spilling
code)
git-svn-id: trunk@15600 -
2010-07-18 21:01:06 +00:00
Jonas Maebe
146a819615
* fixed spilling of and operations on spilled 32 bit values for x86_64
...
(mantis #14403 )
git-svn-id: trunk@13573 -
2009-08-21 16:20:16 +00:00
Jonas Maebe
4e1859e108
* fixed spilling of "mov $64bitconst,%reg" on x86_64
...
git-svn-id: trunk@12711 -
2009-02-07 22:57:59 +00:00
yury
491f0fa1d8
* Replaced all user defined warnings by TODO comments to reduce compiler noise.
...
git-svn-id: trunk@11443 -
2008-07-23 11:00:03 +00:00
yury
5548824859
* Removed/ifdefed/commented unused local variables.
...
git-svn-id: trunk@11438 -
2008-07-23 09:22:47 +00:00
peter
6058b2c247
* renamed t_times to executionweight and moved it to
...
code generation pass
* include executionweight in the spilling decision
git-svn-id: trunk@9330 -
2007-11-25 16:38:05 +00:00
daniel
3ad8257ecb
* Fix replace spilling of shld/shrd.
...
git-svn-id: trunk@7252 -
2007-05-03 20:56:09 +00:00
daniel
f3660976bc
+ Allow replace spilling for "opcode register,const" and "opcode const,register"
...
git-svn-id: trunk@7183 -
2007-04-28 19:11:17 +00:00
daniel
9256c180de
* Fix register allocation bug that happens when a coalesced
...
move is spilled in its entirely.
git-svn-id: trunk@6408 -
2007-02-10 22:47:13 +00:00
Jonas Maebe
e815b923d5
* a_loadfpu_* gets two size parameters: fromsize and tosize
...
* fixed downsizing the precision of floating point values
* floating point constants are now treated using only the minimal
precision required (e.g. 2.0 is now a single, 1.1 extended etc)
(Delphi compatible)
git-svn-id: trunk@5927 -
2007-01-12 18:33:51 +00:00
florian
85d63d9fa9
* settings refactored
...
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +00:00
daniel
3125ed73cf
* Add one more call to get_alias
...
git-svn-id: trunk@5000 -
2006-10-22 09:18:37 +00:00
daniel
01afee1f73
* Add extra calls to get_alias to properly recognize coalesced
...
registers to be spilled.
git-svn-id: trunk@4997 -
2006-10-21 21:31:08 +00:00
Jonas Maebe
51259b697b
* more mmx/sse register spilling fixes:
...
* operand read/write info for movaps and movapd
* use "movapd reg,reg" instead of "movaps reg,reg" if appropriate
so the spilling code can spill the correct size to memory
* replace movaps/movapd with movss/movsd when spilling to memory
instead of movq
git-svn-id: trunk@4612 -
2006-09-12 11:07:45 +00:00
Jonas Maebe
cd0c38b9d9
* fixed spilling of mmx registers
...
git-svn-id: trunk@4604 -
2006-09-10 15:59:58 +00:00
florian
0378f8c162
+ more reg/reg reg/mem only instructions
...
git-svn-id: trunk@3587 -
2006-05-19 23:51:13 +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
b6e35a200e
* rewrite of optimizer options
...
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
florian
0e89afa607
* mm register spilling fixed
...
* no sse instruction can operate on memory
git-svn-id: trunk@762 -
2005-07-27 19:31:31 +00:00
florian
146efddbb7
* unified internal error
...
git-svn-id: trunk@756 -
2005-07-26 21:02:31 +00:00