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
Jeppe Johansen
44beea91b5
- Fix UTX* optimizations that didn't consider the optional ROR parameter.
...
git-svn-id: trunk@41880 -
2019-04-15 21:52:55 +00:00
florian
94d7a02fae
* modified patch by Gareth Moreton to pool TmpUsedRegs in the assembler optimizers, resolves #34679
...
git-svn-id: trunk@40938 -
2019-01-20 14:16:38 +00:00
yury
92e579a294
* Improved the comment.
...
git-svn-id: trunk@40586 -
2018-12-18 13:23:52 +00:00
yury
fdcb12d9f6
* ARM: Remove preindexing and postindexing for LDR in some cases when removing superfluous MOVs. It fixes crash when calling Format() if rtl is compiled with -O3.
...
git-svn-id: trunk@40585 -
2018-12-18 13:20:40 +00:00
Jonas Maebe
122d0d36d6
+ volatile() expression that marks an expression as volatile
...
* disable matching volatile references in the assembler optimisers, so they
can't be removed (more conservative than needed, but better than removing
too many)
o the CSE optimiser will ignore them by default, because they're an unknown
inline node for it
* also removed no longer used fpc_in_move_x and fpc_in_fillchar_x inline node
identifiers from rtl/inc/innr.inc, and placed fpc_in_unaligned_x at the
right place
git-svn-id: trunk@40465 -
2018-12-04 19:53:20 +00:00
pierre
aebc8527ef
Also disable range checking in arm/aoptcpu unit
...
git-svn-id: trunk@40322 -
2018-11-15 22:01:25 +00:00
florian
9f16c34329
+ initial work for tls-based threadvar support on arm-linux
...
git-svn-id: trunk@40267 -
2018-11-07 22:02:58 +00:00
pierre
fbffd2a38f
Fix typecast in FindRegDeAlloc call
...
git-svn-id: trunk@40122 -
2018-10-31 23:18:09 +00:00
Jeppe Johansen
09a8cafcd7
Restricted MlaCmp>Mlas optimization to only work in ARM mode.
...
git-svn-id: trunk@36602 -
2017-06-26 18:14:46 +00:00
florian
4868b83157
* do not generate always debug messages in the arm assembler optimizer
...
git-svn-id: trunk@35891 -
2017-04-22 09:37:18 +00:00
yury
3bedccf946
* ARM scheduler need to move register de-allocs located before the instruction. Also preserve order of allocs and de-allocs.
...
git-svn-id: trunk@35552 -
2017-03-09 19:05:15 +00:00