Commit Graph

242 Commits

Author SHA1 Message Date
florian
c7290bfb78 * enclose {$define DEBUG_AOPTCPU} in {$ifdef EXTDEBUG} 2025-03-10 22:50:49 +01:00
J. Gareth "Curious Kit" Moreton
2a50d5abf8 * ARMv7A / A64: Constant writes to memory merged to larger forms where possible 2024-11-03 15:02:51 +00:00
J. Gareth "Curious Kit" Moreton
9ee1821622 * arm / a64: Extended the AND; CMP -> ANDS family of optimisations to catch BIC as well as AND 2024-04-20 12:55:47 +00:00
Pierre Muller
53bf5dc6ef Avoid wrong typecast by adding check that p1 is an instuction before casting it to taicpu 2024-02-12 10:39:18 +00:00
J. Gareth "Curious Kit" Moreton
271f69db12 * arm/a64: "OptPass2AND" and "OptPass2CMP" adapted to remove vestigial CMP and TST instructions 2024-02-11 21:39:19 +00:00
J. Gareth "Curious Kit" Moreton
6b2e4fa413 * arm: "OpCmp2OpS" moved to Pass 2 so it doesn't conflict with AND; CMP -> TST optimisation 2024-02-11 21:39:19 +00:00
J. Gareth "Curious Kit" Moreton
b18c10d0d8 * arm/a64: New "OptPass2TST" routine to catch "TST; B.c; AND -> ANDS; B.c" optimisation 2024-02-11 21:39:19 +00:00
J. Gareth "Curious Kit" Moreton
9f19f582c4 * arm/a64: New AND/CMP -> TST or ANDS optimisation 2024-02-11 21:39:19 +00:00
J. Gareth "Curious Kit" Moreton
29916bc6f6 * arm: Fixed "RegInInstruction" and "RegModifiedByInstruction" not handling the flags properly 2024-02-11 21:39:19 +00:00
Pierre Muller
6e9521d99a Fix for trunk arm STM optimize bug 2023-11-12 18:22:19 +00:00
J. Gareth "Curious Kit" Moreton
d6ff4ed967 * arm/a64: New sbfx/ubfx -> mov optimisation 2022-07-30 18:36:16 +00:00
florian
bbcc396644 * ARM: fix for Merge Add/Sub optimization
git-svn-id: trunk@49520 -
2021-06-21 21:36:32 +00:00
florian
50648f2a60 + ARM: PushPop optimziation
git-svn-id: trunk@49510 -
2021-06-17 21:12:08 +00:00
florian
e1d9d1be0a + Merge Add/Sub optimization
git-svn-id: trunk@49508 -
2021-06-16 19:53:56 +00:00
florian
7ee31ae252 * optimization "Merging stores: STR/STR -> STM" cannot be carried out when generating thumb code
git-svn-id: trunk@49503 -
2021-06-15 19:05:34 +00:00
florian
776667366f * patch by J. Gareth Moreton: ARM - str/str -> stm optimisation, second part of
git-svn-id: trunk@49499 -
2021-06-13 20:46:46 +00:00
florian
214936b90e * patch by J. Gareth Moreton: refactoring to standardise the "Peephole Optimization: " prefix on peephole debug messages, part of
git-svn-id: trunk@49493 -
2021-06-09 18:31:52 +00:00
florian
134bc7eb42 * ARM: split TCpuThumb2AsmOptimizer.PeepHoleOptPass1Cpu
git-svn-id: trunk@49489 -
2021-06-07 21:20:43 +00:00
florian
d936280c6b * (modified) patch by J. Gareth Moreton to unify ldr/str optimizations on Aarch64/ARM, part of
git-svn-id: trunk@49338 -
2021-05-05 20:38:05 +00:00
yury
9b1567f054 * Corrected method's visibility.
git-svn-id: trunk@48393 -
2021-01-24 14:06:35 +00:00
yury
64c586b86d * Removed/ifdefed lots of unused variables.
git-svn-id: trunk@48384 -
2021-01-24 12:24:01 +00:00
pierre
19d5e43615 Avoid internalerror in RemoveCurrentP for arm compiler
git-svn-id: trunk@47690 -
2020-12-05 21:23:09 +00:00
florian
1014e53081 * patch by J. Gareth Moreton: fixes crash on ARM with -CriotR, resolves
git-svn-id: trunk@47531 -
2020-11-22 19:47:34 +00:00
pierre
3d374727dd Move explicit typecast to after check to avoid RTE when compiled with -CR
git-svn-id: trunk@47367 -
2020-11-09 21:19:40 +00:00
florian
eec51afadd * patch (with little modification) by J. Gareth Moreton: refactor ARM/Aarch64 peephole optimizer, first part of
git-svn-id: trunk@46975 -
2020-09-27 21:05:42 +00:00
florian
c5d7e6807c * ARM: factor out TARMAsmOptimizer.OptPass1And
git-svn-id: trunk@45536 -
2020-05-30 20:44:19 +00:00
florian
0acae47310 * ARM: get rid of more unneeded sxtb/h uxtb/h instructions
git-svn-id: trunk@45529 -
2020-05-29 20:51:04 +00:00
florian
651f5cb8a1 * ARM: (V)LDM do not load from the registers in the reg. set
git-svn-id: trunk@45525 -
2020-05-28 21:37:05 +00:00
florian
a084c8829f * patch by J. Gareth Moreton: refactor RemoveCurrentP
git-svn-id: trunk@45142 -
2020-04-27 19:27:16 +00:00
florian
099faf2d2b * factored out and improved TARMAsmOptimizer.RedundantMovProcess
+ AArch64: use TARMAsmOptimizer.RedundantMovProcess

git-svn-id: trunk@44799 -
2020-04-18 21:48:25 +00:00
florian
9176efbab4 * factored out TARMAsmOptimizer.OptPass1SXTH
* AArch64: use TARMAsmOptimizer.OptPass1SXTH

git-svn-id: trunk@44739 -
2020-04-16 21:19:14 +00:00
florian
19a9d4c4ac * factored out TARMAsmOptimizer.OptPass1SXTB
* AArch64: use TARMAsmOptimizer.OptPass1SXTB

git-svn-id: trunk@44738 -
2020-04-16 21:19:13 +00:00
florian
7172397077 * factored out TARMAsmOptimizer.OptPass1UXTH
* AArch64: use TARMAsmOptimizer.OptPass1UXTH

git-svn-id: trunk@44737 -
2020-04-16 21:19:12 +00:00
florian
9bcff94e9e * factored out TARMAsmOptimizer.OptPass1UXTB
* several other routines being very similar for ARM and AAarch64 moved to aoptarm

git-svn-id: trunk@44725 -
2020-04-15 20:21:29 +00:00
florian
2276caae24 + common assembler optimizer base class for arm and aarch64
git-svn-id: trunk@44720 -
2020-04-13 21:01:01 +00:00
florian
458a6000e7 + arm: optimize sxth/sxtb
git-svn-id: trunk@44713 -
2020-04-12 20:50:40 +00:00
florian
80c0fc3c92 * several fixes to get better reg. allocations in the arm assembler optimizer
git-svn-id: trunk@44245 -
2020-02-26 20:59:35 +00:00
florian
62129db44c * ARM: look further ahead when optimizing mov rX, yyyy
* ARM: fix Mov0 and MovMLA2MUL optimizations

git-svn-id: trunk@44244 -
2020-02-25 21:28:53 +00:00
florian
9132b54b3b + ARM: MovMLA2MUL optimization
git-svn-id: trunk@44243 -
2020-02-25 21:28:52 +00:00
florian
684ef3008f * ARM: optimize mov rX,#0 .... mul/mla/umull ...,rX,...
git-svn-id: trunk@44242 -
2020-02-24 21:10:55 +00:00
florian
d409548842 -- Zusammenführen von r31198 in ».«:
C    compiler/arm/aasmcpu.pas
U    compiler/arm/aoptcpu.pas
-- Aufzeichnung der Informationen für Zusammenführung von r31198 in ».«:
 U   .

git-svn-id: trunk@43825 -
2019-12-31 13:28:03 +00:00
florian
2a315df80c * check in CheckLive* if a register allocator is initialized for a certain register type
git-svn-id: trunk@43665 -
2019-12-08 22:22:17 +00:00
florian
da54d0e8f7 + patch by J. Gareth Moreton: new method TAOptObj.CanDoJumpOpts and arm specific implementation
git-svn-id: trunk@43519 -
2019-11-20 22:12:27 +00:00
florian
a2d3522812 * general-dynamic -> global-dynamic
git-svn-id: trunk@43132 -
2019-10-05 20:48:29 +00:00
florian
5d1d9858d1 + VMovVMov2VMov optimization
git-svn-id: trunk@42727 -
2019-08-18 12:09:03 +00:00
florian
3d5ab366e1 * fix RemoveSuperfluousVMov if the VMov destination reg is an integer register, resolved
git-svn-id: trunk@42726 -
2019-08-18 11:28:39 +00:00
florian
0a0397c9f5 * forgotten part of previous commit: fix BccB2Cond optimization on arm
git-svn-id: trunk@42684 -
2019-08-13 22:12:52 +00:00
florian
fd70fcace6 * fix BccB2Cond optimization on arm
git-svn-id: trunk@42676 -
2019-08-13 10:07:30 +00:00
florian
f23f3a4c5e * enable TCpuAsmOptimizer.RemoveSuperfluousVMov for VLDR
* fixed TCpuAsmOptimizer.RemoveSuperfluousVMov to be actually applied

git-svn-id: trunk@42668 -
2019-08-12 21:25:30 +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