florian
53effea0f5
+ X86: JccMovJmpMov2MovSetcc optimization
...
git-svn-id: trunk@48993 -
2021-03-16 22:19:21 +00:00
florian
612f063795
+ patch by J. Gareth Moreton: AddMov2LeaAdd and AddMov2Lea optimizations, resolves #38579
...
git-svn-id: trunk@48989 -
2021-03-15 21:12:02 +00:00
pierre
85fa313e59
Use uvalue field to get unsigned and avoid range check or overflow errors
...
git-svn-id: trunk@48977 -
2021-03-15 13:24:27 +00:00
florian
913bd009e9
* patch by J. Gareth Moreton: take care of -Os for SubMov2*, part of #38579
...
git-svn-id: trunk@48878 -
2021-03-04 21:35:13 +00:00
florian
01937c4630
* patch by J. Gareth Moreton: SubMov2LeaSub optimisation improvement, resolves #38555
...
git-svn-id: trunk@48871 -
2021-03-02 21:27:43 +00:00
florian
8ffa01e95f
* patch by J. Gareth Moreton: MOV/SHR reference optimisation, resolves #38560
...
git-svn-id: trunk@48857 -
2021-03-01 20:39:57 +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
c6443809ba
+ SETcc/Mov -> SETcc optimization
...
git-svn-id: trunk@48808 -
2021-02-25 22:07:40 +00:00
pierre
236bef961c
Patch by Gareth Moreton
...
* Fix lea optimizations which lead to more failures with -O3 and -O4 options.
- LeaLea2Lea now checks to see if the index register is in use.
- For both the base and index registers, RegUsedBetween is changed to
RegModifiedBetween, since just reading the register is harmless for the
optimisation (it finds additional optimisations in the RTL as a result).
- Because I saw the mis-optimisation with MOVZX that occurred (even
though it was due to the mis-optimisation of LEA instructions), I wrote
some extra code in OptPass2Movx as a safety measure to ensure this
doesn't happen (although no additional instances of it happening have
been noted so far - best be safe than sorry).
git-svn-id: trunk@48802 -
2021-02-24 12:58:04 +00:00
pierre
2cd6951205
Apply patch proposed by J. Gareth Moreton in bug report #0038527
...
The patch reworks the LeaLea2Lea optimisation and hopefully fixes the bug (admittedly by adding a brand new optimisation!).
git-svn-id: trunk@48792 -
2021-02-22 23:15:31 +00:00
yury
2567631aad
* Removed in_x86mm_last (the duplicate no and unused) from the tinlinenumber enum.
...
git-svn-id: trunk@48395 -
2021-01-24 14:28:49 +00:00
yury
75491ae21c
* Removed/ifdefed the assigned and unused variables.
...
git-svn-id: trunk@48391 -
2021-01-24 13:58:17 +00:00
yury
221efd7a80
* Commented out some unused (yet?) local variables.
...
git-svn-id: trunk@48386 -
2021-01-24 13:04:17 +00:00
yury
64c586b86d
* Removed/ifdefed lots of unused variables.
...
git-svn-id: trunk@48384 -
2021-01-24 12:24:01 +00:00
florian
ecc3ce64ea
* x86: some fixes to enable 8 and 16 bit operations
...
git-svn-id: trunk@48166 -
2021-01-16 22:46:25 +00:00
florian
707bce74d7
* patch by J. Gareth Moreton: refactor OptPass2Jcc, resolves #38343
...
git-svn-id: trunk@48162 -
2021-01-15 21:24:44 +00:00
florian
eb81b981cd
* patch by J. Gareth Moreton to fix MovzxCmp2CmpMovzx, resolves #38339
...
git-svn-id: trunk@48124 -
2021-01-10 10:23:40 +00:00
florian
227bd3e904
* simplified code for JccAdd2SetccAdd optimization
...
git-svn-id: trunk@48122 -
2021-01-09 18:21:49 +00:00
florian
f42f62565b
* patch by J. Gareth Moreton to resolve bug introduced in the first patch, resolves #38294
...
git-svn-id: trunk@48117 -
2021-01-08 22:29:24 +00:00
florian
4e9b42344e
+ AddLea2Lea optimization
...
* improved LeaLea2Lea
git-svn-id: trunk@48116 -
2021-01-08 22:22:56 +00:00
florian
28efcfba65
+ patch by J. Gareth Moreton: Advanced MOVZX optimisations, resolves #38294
...
git-svn-id: trunk@48086 -
2021-01-05 15:15:41 +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
9592c033e5
* process fma intrinsic parameters in an order which takes care of multiple x87 stack parameters, resolves #38295
...
git-svn-id: trunk@48017 -
2021-01-03 17:08:58 +00:00
Jonas Maebe
2fc672452d
* fixed error in load_fpu_location triggered by round() (fixes webtbs/tw32671
...
on i386 after r47854)
git-svn-id: trunk@47890 -
2020-12-29 13:07:41 +00:00
florian
33afecd117
+ support got modifier on labels
...
git-svn-id: trunk@47851 -
2020-12-26 18:51:45 +00:00
pierre
26170815b4
Fix compilation of i8086 compiler after commit #47840
...
git-svn-id: trunk@47844 -
2020-12-24 11:26:01 +00:00
florian
b03eefd5d0
* Ch_ information for vreduce* fixed
...
git-svn-id: trunk@47842 -
2020-12-23 17:58:07 +00:00
florian
b713c7380b
* implemented UseAVX512 properly
...
+ make use of VREDUCE* for frac(...) if AVX512QD is a available
git-svn-id: trunk@47840 -
2020-12-23 17:25:09 +00:00
florian
b28aa5c684
* properly handle result size for avx/sse based frac function, resolves #38248
...
git-svn-id: trunk@47839 -
2020-12-23 16:10:08 +00:00
pierre
2bcd2a4a93
Appply fix from Gareth Moreton in bug report 38247
...
git-svn-id: trunk@47838 -
2020-12-23 10:19:44 +00:00
Károly Balogh
01691e9ecb
* fix the m68k cross-builds by disabling part of r47824
...
git-svn-id: trunk@47835 -
2020-12-22 23:14:25 +00:00
florian
2a990b8167
+ patch by J. Gareth Moreton: some new x86 assembler optimizations, resolves #38130
...
git-svn-id: trunk@47824 -
2020-12-20 18:05:43 +00:00
florian
80f87edffd
* x86-64: correctly translate and with large constants in mod optimizations, resolves #38164
...
git-svn-id: trunk@47805 -
2020-12-17 22:09:23 +00:00
florian
9af9f140a5
* do an unsigned division if one operand is unsigned an the other
...
one a constant in its range, resolves #38180
git-svn-id: trunk@47797 -
2020-12-16 21:55:05 +00:00
florian
aeff5b3577
* improved change information
...
git-svn-id: trunk@47781 -
2020-12-15 21:33:33 +00:00
florian
674c3f04e0
+ added explanation for min/max intrinsics
...
* prepared x86 implementation for proper NaN handling
git-svn-id: trunk@47715 -
2020-12-07 21:31:07 +00:00
florian
1a9678f4c4
+ min/max support for x86
...
git-svn-id: trunk@47701 -
2020-12-06 18:09:30 +00:00
florian
92520c423e
* x86 change information updated
...
git-svn-id: trunk@47698 -
2020-12-06 16:22:38 +00:00
florian
482698e566
+ add endsym to ConcatConstSymbol
...
git-svn-id: trunk@47668 -
2020-12-02 21:44:12 +00:00
florian
792b629aa6
+ -Xa option: generate code which allows to use more than 2 GB of static data on 64 Bit targets
...
+ implemented support for x86-64
* more than 2 GB static data requires to use the --no-relax option on linux
git-svn-id: trunk@47651 -
2020-11-30 22:07:34 +00:00
florian
c890a126fe
* allow an AT&T suffix for movabs
...
git-svn-id: trunk@47650 -
2020-11-30 22:07:33 +00:00
florian
9c7cb3dbd7
* fix spilling of avx(512) registers
...
* get_scalar_mm_op fixed for M256
git-svn-id: trunk@47524 -
2020-11-21 22:30:34 +00:00
pierre
f0b22a1569
Revert commit #47257 , Disable use of cmov instructions in alignment patterns for some i386 targets (it prevents use of some emulators)
...
Replace it by a new set of i386 targets, for which the default cpu is set to i80486 instead of pentium2
to avoid (for default configuration) use of CMOVxx or PREFETCHyyy instructions, not supported by some emulators.
git-svn-id: trunk@47433 -
2020-11-16 17:04:46 +00:00
florian
bf7961a901
* fixes for nasm writer, resolves #38074
...
+ test
git-svn-id: trunk@47413 -
2020-11-13 21:39:16 +00:00
florian
fc960879de
-- Zusammenführen von r47033 bis r47401 in ».«:
...
C compiler/i386/i386nop.inc
U compiler/i386/i386tab.inc
U compiler/i386/i386atts.inc
U compiler/i386/i386att.inc
C compiler/i8086/i8086nop.inc
U compiler/i8086/i8086tab.inc
U compiler/i8086/i8086atts.inc
U compiler/i8086/i8086att.inc
U compiler/x86/x86ins.dat
C compiler/x86/rax86.pas
U compiler/x86/aasmcpu.pas
U compiler/x86/cpubase.pas
U compiler/x86/agx86att.pas
U compiler/x86/itcpugas.pas
U compiler/x86/rax86att.pas
C compiler/x86_64/x8664nop.inc
U compiler/x86_64/x8664tab.inc
U compiler/x86_64/x8664ats.inc
U compiler/x86_64/x8664att.inc
U compiler/utils/mkx86ins.pp
U tests/utils/avx/asmtestgenerator.pas
U tests/utils/avx/avxopcodes.pas
-- Aufzeichnung der Informationen für Zusammenführung von r47033 bis r47401 in ».«:
U .
Konfliktübersicht:
Textkonflikte: 4
Konfliktübersicht:
Textkonflikte: 4
git-svn-id: trunk@47402 -
2020-11-12 20:31:29 +00:00
tg74
897322868b
bugfix avx512 shift-opcodes vpsl..,vpsr.. - reg,mem,const => EVEX-coded = yes / VEX-coded = no
...
git-svn-id: branches/tg74/avx512-0037785@47401 -
2020-11-12 16:02:38 +00:00
tg74
dbfff3f76a
bugfix movss/vmovss
...
git-svn-id: branches/tg74/avx512-0037785@47389 -
2020-11-11 16:26:49 +00:00
tg74
c25c24e411
bugfix vfnmadd231sd
...
git-svn-id: branches/tg74/avx512-0037785@47388 -
2020-11-11 16:25:11 +00:00
tg74
99882e8d59
bugfix internal assembler compiling vpmov*
...
git-svn-id: branches/tg74/avx512-0037785@47386 -
2020-11-11 05:07:56 +00:00
florian
c3a0e0c6d2
* compilation on i386 fixed
...
git-svn-id: trunk@47369 -
2020-11-09 21:46:25 +00:00