Commit Graph

2103 Commits

Author SHA1 Message Date
J. Gareth "Curious Kit" Moreton
fe39f9ca21 Fixed bug on x86 platforms where the stack pointer was not allocated if it was different to the frame pointer 2022-02-08 20:47:47 +00:00
florian
c42b8c43bd * \t => spaces 2022-02-07 23:04:20 +01:00
J. Gareth "Curious Kit" Moreton
c4ea01cf3d Improved JccMov1JmpMov0Jmp -> SETcc optimisation 2022-02-03 21:38:52 +00:00
J. Gareth "Curious Kit" Moreton
9b4033fa80 Fast mod 2022-01-30 08:22:39 +00:00
J. Gareth "Curious Kit" Moreton
29625c7112 Fixed registers in references not being tracked properly in MovMovXX2MovXX 1 optimisation 2022-01-28 20:17:24 +00:00
J. Gareth "Curious Kit" Moreton
f8e04aad03 CMOV now modifies rather than writes to the destination register so RegUsedAfterInstruction behaves properly 2022-01-28 20:17:24 +00:00
J. Gareth "Curious Kit" Moreton
69fff102af Added correct flag tracking for JccMov2CMov optimisations 2022-01-28 20:17:24 +00:00
florian
2a7744df80 * check also for 64 bit registers in TX86AsmOptimizer.RegModifiedByInstruction 2022-01-23 12:30:30 +01:00
florian
c062061d6d + MovapXComisX2ComisX2 optimization 2022-01-18 23:05:20 +01:00
J. Gareth "Curious Kit" Moreton
32d6cf7093 Fixed and refactored MOVX optimisation that occasionally caused crashes on i386 platforms 2022-01-16 20:04:53 +00:00
J. Gareth "Curious Kit" Moreton
bb49c190af New MOV optimisation that helps reduce instruction count and memory accesses 2022-01-10 20:53:08 +00:00
J. Gareth "Curious Kit" Moreton
67a1d52806 JccAdd2SetccAdd modified to make use of GetIntRegisterBetween 2022-01-08 22:43:41 +00:00
J. Gareth "Curious Kit" Moreton
30166f8eb7 Procedure-saved registers are now recorded for peephole optimizers to use 2022-01-08 22:43:41 +00:00
florian
4966e93764 * small fix for ie 2022-01-07 11:05:49 +01:00
J. Gareth "Curious Kit" Moreton
15a5a62eb4 New backward MOV optimisation 2022-01-06 20:57:48 +00:00
J. Gareth "Curious Kit" Moreton
33cf86ff9f PostPeepholeOptTestOr now removes TEST when dealing with POPCNT and LZCNT 2022-01-06 20:57:48 +00:00
J. Gareth "Curious Kit" Moreton
116c861af6 MOV/CMP optimisation is now in both Pass 1 and Pass 2 to catch more
eventualities
2021-12-31 14:28:35 +00:00
J. Gareth "Curious Kit" Moreton
8609c0803e Fixed MovxOp2Op failing on i386 due to lack of register check 2021-12-26 16:20:18 +00:00
J. Gareth "Curious Kit" Moreton
f289f2694a x86: Additions to OptPass2Movx to better synergise with new CMP optimisation under -O2 2021-12-25 19:07:48 +00:00
J. Gareth "Curious Kit" Moreton
683a92bcc8 i386: Correction to GetIntRegisterBetween to ensure we only get 8-bit registers that we can actually encode 2021-12-25 19:07:48 +00:00
J. Gareth "Curious Kit" Moreton
1da7ce46de x86: New double CMP optimisation to remove a branch 2021-12-25 19:07:48 +00:00
J. Gareth "Curious Kit" Moreton
cafd708b6d Refactoring of OptPass2Movx to remove goto 2021-12-25 16:38:10 +00:00
J. Gareth "Curious Kit" Moreton
22cd8d5d62 Fixed bug in MovxMovx2Movx optimisation that would specify a 64-bit destination instead of 32-bit one 2021-12-25 14:49:08 +00:00
J. Gareth "Curious Kit" Moreton
b4c8c1da12 Overflow bug fixes to MovZX/SX optimisations when CMP instructions are encountered. 2021-12-23 07:14:49 +00:00
florian
6dbe71cd30 * TX86AsmOptimizer.OptPass1MOVXX should search only over other instructions if it works with registers only 2021-12-22 22:54:11 +01:00
florian
6147d6d8a0 * compilation with i386 fixed 2021-12-21 22:46:12 +01:00
J. Gareth "Curious Kit" Moreton
d083cc7247 New MovxAndTest2Test optimisation to mirror the regular MovAndTest2Test optimisation 2021-12-20 22:10:22 +00:00
J. Gareth "Curious Kit" Moreton
5b4c104aaf Massive overhaul to OptPass2Movx to favour operand shrinkage 2021-12-20 22:10:22 +00:00
J. Gareth "Curious Kit" Moreton
d255ffba8b Improved handling of signed sequences in OptPass2Movx 2021-12-20 22:10:22 +00:00
J. Gareth "Curious Kit" Moreton
01e5f4855a MovZX->MovSX optimisation 2021-12-20 22:10:22 +00:00
J. Gareth "Curious Kit" Moreton
4825d2d16c New Movz ###,%ecx, shift/rotate %cl,... optimisation 2021-12-20 22:10:22 +00:00
J. Gareth "Curious Kit" Moreton
f02b7508de Bolder OptPass2Movx optimisations, including a simplification fix 2021-12-20 22:10:22 +00:00
J. Gareth "Curious Kit" Moreton
da899df6b2 New MovxMovxOp2OpMovx optimisation 2021-12-20 22:10:22 +00:00
J. Gareth "Curious Kit" Moreton
40196f4a43 Fixes to ADD/SUB 128 optimisation that didn't check flags properly, and also handling ADC/SBB properly 2021-12-19 20:51:57 +00:00
J. Gareth "Curious Kit" Moreton
b4bd15a5c0 Removed incorrect logic in TEST optimisation 2021-12-17 22:10:12 +00:00
J. Gareth "Curious Kit" Moreton
be448e29f6 Fixed bug in new TEST optimisation where a FLAGS check always returned "in use" 2021-12-15 20:14:26 +00:00
J. Gareth "Curious Kit" Moreton
42c429bf45 New optimisation that merges small constants written to the stack 2021-12-15 19:47:50 +00:00
J. Gareth "Curious Kit" Moreton
7a15312b54 Safety checks on TEST removals and better FLAG tracking 2021-12-13 16:11:33 +00:00
J. Gareth "Kit" Moreton
f60523a3b9 x86: New TEST optimisations 2021-12-12 21:40:42 +00:00
Yuriy Sydorov
e9acd759a4 * Fixed random AVs when targeting the AVX FPU. 2021-12-12 18:19:35 +02:00
Yuriy Sydorov
7b2cd0bcdc * Prevent a range check error in case of big unsigned values. 2021-12-12 17:55:46 +02:00
J. Gareth "Curious Kit" Moreton
2dc0995067 - Bug fix to new ADD/SUB optimisation where conditions are concerned
- Register allocation fixes for overflow checks
2021-11-17 20:18:57 +00:00
J. Gareth "Curious Kit" Moreton
3ce6c478cc Bug fixes to magic division and vectorcall code that trigger -CriotR checks 2021-11-16 20:39:57 +00:00
J. Gareth "Curious Kit" Moreton
9f60628e5b x86: new optimisation to change add/sub 128,(dest) to sub/add -128,(dest) to reduce binary size 2021-11-14 21:38:38 +00:00
Pierre Muller
8e7791ac23 Explicitly disable overflow for offset propagation optimization 2021-11-08 22:55:44 +00:00
J. Gareth "Curious Kit" Moreton
671c674d65 Expanding division to 64-bit and tests 2021-11-08 21:46:12 +00:00
florian
7fcbd1d7e0 * my last commit hopefully fixed 2021-11-07 14:58:17 +01:00
florian
492d75483d * fix (V)Cvtss2CvtSd(V)Cvtsd2ss2* optmizations for non-avx code, resolves #39416 2021-11-07 14:46:13 +01:00
florian
44051b4af3 * corrected accidently made changs in 01a449c8, resolves #39424 2021-11-03 22:41:07 +01:00
J. Gareth "Curious Kit" Moreton
284317d877 Fixed OptPass2Lea not honouring symbols 2021-10-31 15:44:00 +00:00