Commit Graph

1935 Commits

Author SHA1 Message Date
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