Commit Graph

2397 Commits

Author SHA1 Message Date
J. Gareth "Curious Kit" Moreton
a70e4ed9be * x86: "OptPass2ADD" and "OptPass2SUB" now force another iteration if "OptPass2MOV" returned True 2025-03-02 14:00:57 +00:00
J. Gareth "Curious Kit" Moreton
f85aa24ad0 * x86: Refactoring register update code in "OptPass2ADD" and "OptPass2SUB" 2025-03-02 14:00:57 +00:00
J. Gareth "Curious Kit" Moreton
b2dd980329 * x86: Fixed bug where flags register wasn't tracked during
long-range "AddMov2LeaAdd" and "SubMov2LeaSub" optimisations
2025-03-02 14:00:57 +00:00
J. Gareth "Curious Kit" Moreton
83c9b17ec5 * x86: Fixed oversight in LeaLea2LeaLea optimisations where bad code is
generated if the intermediate register appears in the first reference
2025-02-27 21:25:23 +00:00
J. Gareth "Curious Kit" Moreton
4648f967bd * x86: Fixed bug in "MovMovMov2MovMovMov" optimisation where a register wasn't properly tracked 2025-02-24 15:32:21 +00:00
florian
9a223100d1 + x86: proper flag (de)alloc in a_bit_scan 2025-02-15 22:19:05 +01:00
florian
29b3b09251 * allow absolutes on open arrays (use of this is doubtful though), resolves #41147 2025-02-11 22:45:56 +01:00
Rika Ichinose
d1ba97d462 Make use of not_zero in x86 bitscans. 2025-02-09 21:01:43 +00:00
florian
b2f6214b33 + a_bit_scan_reg_reg gets a flag if src cannot be zero: this simplifies the generated code 2025-02-08 14:27:48 +01:00
florian
125da5f10a * SubLea2Lea has to check both times for equal super registers, resolves the second part of #41126 2025-02-03 22:19:25 +01:00
florian
f75de6c340 * check for 64 bit registers in TX86AsmOptimizer.RegReadByInstruction as well for sanity reasons 2025-02-02 22:12:06 +01:00
florian
9355e703d7 * change some getglobaldatalabel into getlocaldatalabel to simplify code if pic is used 2025-01-13 22:34:31 +01:00
florian
5b54ab2040 + zen5 architecture for completeness 2024-12-07 22:23:35 +01:00
User Muller
f689746372 cmpxchg16b instruction uses no size suffix in ATT syntax 2024-12-06 14:45:44 +01:00
J. Gareth "Curious Kit" Moreton
36f771a312 * x86: Modification to PostPeepholeOptShr to skip over MOV instructions if they don't modify the current register 2024-11-30 12:51:07 +00:00
florian
42c5e368bd * formatting/readability 2024-11-10 09:33:51 +01:00
J. Gareth "Curious Kit" Moreton
43bdd8c07e * x86: Refactor of a DeepMOVOpt call to make use of a while loop and aoc_ForceNewIteration to increase compiler speed and efficiency. 2024-11-10 08:23:02 +00:00
J. Gareth "Curious Kit" Moreton
8520dabebb * x86: New RET/lbl/RET optimisation 2024-10-27 08:17:10 +00:00
J. Gareth "Curious Kit" Moreton
8bb3367a49 * x86: Refactored SetCC optimisations to better
spot label clusters and alignment hints.
2024-10-27 08:17:10 +00:00
florian
5d4bb6db9b * patch by lag programming to replace bitcnt by popcnt, resolves #40962 2024-10-22 22:54:57 +02:00
J. Gareth "Curious Kit" Moreton
80f1d55822 - MovOp2Op optimisation upgraded. 2024-10-20 12:43:52 +00:00
J. Gareth "Curious Kit" Moreton
85ee93c2c5 - MovLea2Add optimisation upgraded. 2024-10-20 12:43:52 +00:00
J. Gareth "Curious Kit" Moreton
1bc0ae3d18 - Mov2Nop 5a and Mov2Nop 5b optimisations upgraded. 2024-10-20 12:43:52 +00:00
J. Gareth "Curious Kit" Moreton
f36fbd17b1 - 32-to-64-bit zero extension optimisations upgraded. 2024-10-20 12:43:52 +00:00
J. Gareth "Curious Kit" Moreton
b1a76314ae - Const and ref merge optimisations upgraded. 2024-10-20 12:43:52 +00:00
J. Gareth "Curious Kit" Moreton
65f2dd2337 - OR and extension optimisations upgraded. 2024-10-20 12:43:52 +00:00
J. Gareth "Curious Kit" Moreton
6dfe323e6f - AND and DeepMovOpt optimisations upgraded. 2024-10-20 12:43:52 +00:00
J. Gareth "Curious Kit" Moreton
e187d49590 * x86: New reference support methods to detect modification 2024-10-20 12:43:52 +00:00
J. Gareth "Curious Kit" Moreton
d0c7838eec * x86: CheckMovMov2MovMov2 now sets "Force New Iteration" if it optimises 2024-10-20 12:43:52 +00:00
J. Gareth "Curious Kit" Moreton
d5c6286852 * x86: Bug fix in OptPass1MOV long-range optimisations where
the wrong register was checked to see if had changed.
2024-10-20 12:43:52 +00:00
florian
210cb8cb74 * load 64 bit constants through a register into memory to avoid store-forwarding stalls, resolves #40945 2024-10-12 21:19:14 +02:00
florian
23bbf87c10 * accidentally committed with a set debug define 2024-10-08 23:13:53 +02:00
florian
e91c8040ea * do not generate lea with 16 bit references on x86-64, resolves #40936 2024-10-07 22:53:54 +02:00
florian
2f5fe67e56 * FSRM works only with movsb 2024-09-28 21:52:37 +02:00
florian
eb440e0ff1 + Zen4 for i386 2024-09-22 10:43:26 +02:00
Rika Ichinose
fc1050a834 Make use of CPUX86_HINT_BSX_DEST_UNCHANGED_ON_ZF_1 in Bsf*/Bsr*. 2024-09-22 08:33:44 +00:00
J. Gareth "Curious Kit" Moreton
a06a20f9c0 * x86: Fixed an issue where invalid typecast errors would be raised in the peephole optimizer under -CriotR 2024-07-25 20:35:06 +00:00
florian
f6002d8078 * ensure make_simple_ref is called, resolves #40851 2024-07-10 22:26:09 +02:00
florian
db5e821ead * more change information updates 2024-07-02 22:21:24 +02:00
florian
9ce7fbeef0 * change information updates 2024-06-28 22:45:00 +02:00
J. Gareth "Curious Kit" Moreton
fb66369a3b * x86: CheckJumpMovTransferOpt now also copies over register deallocations to allow better optimisations 2024-06-24 20:05:39 +00:00
florian
2fe3955be9 + more change information 2024-06-11 23:22:21 +02:00
florian
bdb611c925 * small fix of change information 2024-06-10 23:10:48 +02:00
florian
15b3f16646 * use fld1/fchs regardless of pic 2024-06-06 22:36:29 +02:00
florian
aaeefacf85 * also optimize loading of -1.0 2024-06-05 22:56:45 +02:00
florian
8c2aca6ece * load 2 on x86 stack by fld1/fadd, if pic code is generated. It is more efficient as two memory accesses are saved. 2024-06-04 23:21:26 +02:00
florian
c64fae2f89 * missing AVX-2 change information fixed 2024-06-03 23:29:37 +02:00
florian
73a251410e + more change information 2024-06-02 23:11:14 +02:00
florian
8db51a367e * forgotten part of last commit 2024-06-01 18:53:50 +02:00
florian
055681c8b4 * correct change information for some instructions where the change
information cannot be modelled in x86ins.dat
2024-06-01 18:46:23 +02:00