Commit Graph

93 Commits

Author SHA1 Message Date
J. Gareth "Curious Kit" Moreton
5536810075 * x86: Fixed bug where "aoc_ForceNewIteration" wouldn't update the registers properly in some circumstances 2025-03-02 14:00:57 +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
11b341cc97 * x86: Added new OptPass1CMOVcc peephole optimisation routine to dust up min/max code 2024-03-26 14:18:31 +00:00
J. Gareth "Curious Kit" Moreton
a7fe49f38f * x86: CMOVcc/Jcc pairs are now changed to MOV/Jcc if the register is not used if the jump doesn't branch 2024-03-10 21:09:59 +00:00
J. Gareth "Curious Kit" Moreton
62495c964a * x86: New "aoc_DoPass2JccOpts" option to catch branch and
STC/CLC optimisations that only manifest in Pass 2
2024-02-11 15:05:57 +00:00
J. Gareth "Curious Kit" Moreton
3e06242fd8 * x86: New "STC/CLC; MOV" peephole optimisation 2024-02-11 15:05:57 +00:00
J. Gareth "Curious Kit" Moreton
b514e979bd * Fixed issue where OptPass2CMP and OptPass2TEST didn't drop out on labels etc. 2024-01-27 19:00:50 +00:00
florian
c4fc5fc916 * disable OptPass2Test and OptPass2CMP for now as it seems to result in buggy code 2024-01-23 22:11:59 +01:00
J. Gareth "Curious Kit" Moreton
63879e74cd * x86: Additional TEST/CMP optimisations to optimise CMOV blocks
that aren't optimal due to register pressure
2024-01-07 14:29:42 +00:00
J. Gareth "Curious Kit" Moreton
47825610b8 * Pass 2 can now be run multiple times when
under -O3 and above.
2023-11-05 10:03:52 +00:00
J. Gareth "Curious Kit" Moreton
b8933dd267 * x86: Some refactoring to use aoc_ForceNewIteration instead of manually advancing p 2023-03-04 18:40:27 +00:00
J. Gareth "Curious Kit" Moreton
6757bf3832 * x86: New SHR-based optimisations 2022-09-16 16:57:55 +00:00
J. Gareth "Curious Kit" Moreton
de650dea55 * x86: Fixed minor logic bug in aoc_ForceNewIteration check where UpdateUsedRegs was called at the wrong time. 2022-07-27 16:26:07 +01:00
J. Gareth "Curious Kit" Moreton
9432a550e1 * x86: Bug fix where aoc_ForceNewIteration was
checked in the wrong pass.
2022-07-23 12:58:20 +00:00
J. Gareth "Curious Kit" Moreton
627fb9a25b * x86: New jump/label tracking in CrossJump optimisations 2022-04-24 16:42:35 +00:00
florian
4808ed63e3 * use MOVDQA instead of MOVQ in spilling_create_store
* call OptPass1_V_MOVAP for MOVDQA
2022-04-19 22:35:02 +02:00
J. Gareth "Curious Kit" Moreton
72661fd5c1 Added missing MOVSXD check to PostPeepHoleOptsCpu 2021-12-09 02:15:55 +00:00
J. Gareth "Curious Kit" Moreton
b58fdc3e58 Improved ADD and SUB optimisations for LEA instructions 2021-10-31 15:44:00 +00:00
J. Gareth "Curious Kit" Moreton
fd28cc0db0 Better handling of zeroing upper parts of registers
Better handling of zeroing upper parts of registers
2021-10-16 14:42:19 +02:00
J. Gareth "Curious Kit" Moreton
674ed4069a Expanded MM block move to include YMM registers under AVX 2021-10-16 14:17:41 +02:00
florian
ec40db3da7 + (V)Cvtss2CvtSd(V)Cvtsd2ss2Nop optimization, resolves #39360 2021-10-06 21:57:24 +02:00
florian
c67d35b8cc * patch by J. Gareth Moreton: x86: Minor bitwise optimisations, resolves #39299
git-svn-id: trunk@49614 -
2021-07-16 21:47:36 +00:00
florian
7d6b01bfc4 + SHXXMov2SHXX optimization
git-svn-id: trunk@49579 -
2021-07-05 21:07:46 +00:00
florian
bae583118a * patch by J. Gareth Moreton: x86 JccMovJmpMov2MovSetcc improvement, resolves #38761
git-svn-id: trunk@49402 -
2021-05-26 21:03:56 +00:00
florian
5726428dcc * patch by J. Gareth Moreton: Additional SETcc optimisations, resolves #38767
git-svn-id: trunk@49386 -
2021-05-21 20:36:15 +00:00
florian
578424cf51 * patch by J. Gareth Moreton: TEST chain shortcutting, resolves #38908
git-svn-id: trunk@49385 -
2021-05-20 20:45:38 +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
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
b90ec52a0e * x86: apply VOpVmov2VOp optimization to vmins*/vmaxs*
git-svn-id: trunk@47768 -
2020-12-13 09:52:45 +00:00
florian
78244d89dc * use VPXORD in avx-512 mode as VPXOR does not work for the upper 16 registers
git-svn-id: trunk@47368 -
2020-11-09 21:21:36 +00:00
florian
8e62bf649e * load 0.0 by (V)XORPS/D instead of (V)PXOR in mm registers
git-svn-id: trunk@47073 -
2020-10-10 13:23:35 +00:00
florian
1fb7603f61 * x86: ImulMov2Imul optimization
* x86: apply OptPass1VOP also to vsqrts*

git-svn-id: trunk@46955 -
2020-09-25 20:06:27 +00:00
florian
afb68dbcf3 * factored out OptPass1VPXor
git-svn-id: trunk@45487 -
2020-05-24 17:52:07 +00:00
florian
809fb83334 * adapt optimizer to handle push/pop for stack alignment
* adapt test

git-svn-id: trunk@45477 -
2020-05-23 17:50:14 +00:00
florian
9b54588d75 + PXorPXor2PXor optimization
git-svn-id: trunk@45430 -
2020-05-18 21:28:45 +00:00
florian
892454ff17 * patch by J. Gareth Moreton: optimize MOVSXD as well, resolves #36700
git-svn-id: trunk@44185 -
2020-02-15 20:53:40 +00:00
florian
993144b91b * patch by J. Gareth Moreton: x86 SUB and LEA optimisations, resolves #36622
git-svn-id: trunk@44030 -
2020-01-24 21:10:17 +00:00
florian
16152cf948 * patch by J. Gareth Moreton: get rid of another pass through the assembler list by integrating OptReferences
into the post optimizer pass

git-svn-id: trunk@44001 -
2020-01-19 20:11:05 +00:00
florian
124c64152d * patch by J. Gareth Moreton: EAX -> EDX:EAX sign extension shortcuts, and MOVSX shortcuts for AX register, part 2 of #36551
git-svn-id: trunk@43918 -
2020-01-12 09:20:01 +00:00
florian
d444f750f9 * factored out TX86AsmOptimizer.OptPass1Cmp
* fixed it
  * activated it for x86-64

git-svn-id: trunk@43574 -
2019-11-24 16:33:50 +00:00
florian
20a47afe13 * more aggressive LeaCallLeaRet2Jmp
git-svn-id: trunk@43373 -
2019-11-02 22:37:31 +00:00
florian
3487c34ed9 * unified TX86AsmOptimizer.OptPass1MOVAP and TX86AsmOptimizer.OptPass1VMOVAP
git-svn-id: trunk@43370 -
2019-11-02 18:48:23 +00:00
Jonas Maebe
281b3ad276 * fix case completeness and unreachable code warnings in compiler that would
be introduced by the next commit

git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
florian
c7bb028d35 * factored out OptPass1FLD, used bx x86-64 now as well
- removed unused function

git-svn-id: trunk@41061 -
2019-01-24 20:10:29 +00:00
florian
24f6cc0da5 * factored out OptPass1FSTP, used by x86-64 now as well
git-svn-id: trunk@41059 -
2019-01-24 19:38:32 +00:00
florian
59d5d6ec95 + factored out TX86AsmOptimizer.PrePeepholeOptIMUL, used now by x86-64 and i386
* generalized and simplified the code

git-svn-id: trunk@40162 -
2018-11-01 20:49:20 +00:00
florian
78943ea843 + patch by J. Gareth Moreton: x86 optimisations for Jcc and SETcc, resolves #33899
* optimization also added for i386

git-svn-id: trunk@39307 -
2018-06-25 20:40:05 +00:00
florian
9b18e39c81 * enable Lea2AddBase and Lea2AddIndex in TX86AsmOptimizer.PostPeepholeOptLea as we have flag tracking now
* some flag allocations fixed

git-svn-id: trunk@38501 -
2018-03-11 20:30:09 +00:00
florian
5fbecc5501 + use TX86AsmOptimizer.OptPass1SHLSAL on x86-64
git-svn-id: trunk@38499 -
2018-03-11 14:35:22 +00:00