Commit Graph

1944 Commits

Author SHA1 Message Date
florian
b09669dffe * allow also CSUBSETREG in tx86inlinenode.second_IncludeExclude, resolves #38733
git-svn-id: trunk@49151 -
2021-04-09 20:09:19 +00:00
Jonas Maebe
ca399f3c71 * don't generate high-level CFI statements when the selected assembler
does not support them, even if the target normally uses them
   o fixes assembling with -Aas-darwin for i386/arm/x86-64 (on OS
     versions that used those)

git-svn-id: trunk@49138 -
2021-04-08 19:50:27 +00:00
florian
503fc85dff * patch by J. Gareth Moreton: handle register allocations correctly in MovMov2Mov 3, resolves #38703
git-svn-id: trunk@49128 -
2021-04-06 15:50:28 +00:00
florian
87a67a3222 * typo fixed
git-svn-id: trunk@49118 -
2021-04-03 22:01:47 +00: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
07a8e6c1d6 + some more change information entries added
git-svn-id: trunk@49092 -
2021-03-31 18:53:31 +00:00
florian
aa1a68000b * prefetch instructions read only the operand
git-svn-id: trunk@49089 -
2021-03-30 21:24:00 +00:00
florian
47557e0ad2 * cpubase.cgsize2subreg should handle all valid sizes, resolves #38557
git-svn-id: trunk@49087 -
2021-03-30 16:44:19 +00:00
florian
6218254e53 * allow also 8 byte string constants in assembler, resolves #28640
git-svn-id: trunk@49066 -
2021-03-27 17:13:14 +00:00
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