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 #38975
...
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 #38975
...
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 #38841
...
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 #38116
...
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 #37526
...
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 #35978
...
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