The sources of the Free Pascal compiler, RTL, packages and utilities. See https://www.freepascal.org/ for more info.
Go to file
florian c75486db89 * patch by Nico Erfurth:
Reorder unaligned Load sequence on ARM

The old version produced code like that:

ldrb rDEST, [rBASE]
ldrb rTemp, [rBASE, #1]
orr  rDEST, rDEST, rTEMP lsl #8 (2 stall cycles)
ldrb rTemp, [rBASE, #2]
orr  rDEST, rDEST, rTEMP lsl #16 (2 stall cycles)
ldrb rTemp, [rBASE, #3]
orr  rDEST, rDEST, rTEMP lsl #24 (2 stall cycles)

This creates a lot of stall-cycles on ARM Implementations with load
delay slots like Marvel Kirkwood or Intel XScale. With the usual up to 2
stall-cycles this code requires a total of 13 cycles (7 instructions + 6 stall
cycles) in best case.

The new code uses a second temp register to avoid the stall cycles.

ldrb rDEST, [rBASE]
ldrb rTemp1, [rBASE, #1]
ldrb rTemp2, [rBASE, #2]
orr  rDEST, rDEST, rTEMP1 lsl #8
ldrb rTemp1, [rBASE, #3]
orr  rDEST, rDEST, rTEMP2 lsl #16
orr  rDEST, rDEST, rTEMP1 lsl #24 (1 stall cycle)

The rescheduling and second register bring the total cycles down to 8.
If a later rescheduling should happen for the last orr it even can go
down to 7.

git-svn-id: trunk@21363 -
2012-05-22 19:09:20 +00:00
compiler * patch by Nico Erfurth: 2012-05-22 19:09:20 +00:00
ide * removed single remaining use of a 1.0.x deprecated function. 2012-05-18 12:11:50 +00:00
installer + Regenerate all Makefiles's after adding x86_64 netbsd target 2012-04-24 23:15:18 +00:00
packages * CTFrameSetter.pas -> CTFramesetter.pas (fixes installation on 2012-05-21 13:50:36 +00:00
rtl * more removal of deprecated functions (deprecated before 2.4.0) 2012-05-22 08:04:24 +00:00
tests Allow the usage of a generic's name without type arguments inside of nested classes inside the generic. This fixes Mantis #19499, but also Mantis #18688. 2012-05-22 12:19:11 +00:00
utils * abort if the specified destination file is a directory (mantis #22089) 2012-05-21 11:37:41 +00:00
.gitattributes Allow the usage of a generic's name without type arguments inside of nested classes inside the generic. This fixes Mantis #19499, but also Mantis #18688. 2012-05-22 12:19:11 +00:00
.gitignore fpvectorial is now moved to lazarus/components/fpvectorial 2011-10-30 16:42:46 +00:00
Makefile * fixed "make install" for non-JVM targets after r21069 2012-04-27 09:17:50 +00:00
Makefile.fpc * fixed "make install" for non-JVM targets after r21069 2012-04-27 09:17:50 +00:00