fpc/compiler/arm
florian aa2a9dbf2e patches by Nico Erfurth to improve the arm peephole optimizer:
* Introduce MatchInstruction and MatchOperand

MatchInstruction allows to match an instruction by condition and
oppostfix. MatchOperand checks if an operand is a register and matches
another operand. In the future this could be overloaded with other
versions not only accepting TRegister.

* Optimize cmp,moveq,movne sequence on ARM

This patch implements an peephole optimizer for the following sequence:

  cmp   reg,const1
  movne reg,const2
  moveq reg,const1

* Small improvements to the ARM peephole optimizer

Most instructions in the ARM ISA have taicpu(p).oper[0]^.typ = top_reg
as the only option, so there is no need to check for it if we're
looking at those instructions.

* Remove redundant mov instructions on ARM

This is an addition to the ARM PeepHole Optimizer.
It folds code like this:

mov reg1, reg2
add reg1, reg1, (const|reg)

git-svn-id: trunk@21024 -
2012-04-24 18:25:19 +00:00
..
aasmcpu.pas + Support for ARM CPS/CPSIE/CPSID instructions and mode flag bitfield 2011-01-11 16:02:51 +00:00
agarmgas.pas + generic implementation of ReplaceForbiddenAsmSymbolChars() instead 2012-04-11 18:01:57 +00:00
aoptcpu.pas patches by Nico Erfurth to improve the arm peephole optimizer: 2012-04-24 18:25:19 +00:00
aoptcpub.pas * typo fixed 2012-03-11 08:24:44 +00:00
aoptcpuc.pas
aoptcpud.pas
armatt.inc * patch by Jeppe Johansen to support jumptable generation for case nodes on arm/thumb-2, resolves #19502 2011-08-16 22:39:00 +00:00
armatts.inc * patch by Jeppe Johansen to support jumptable generation for case nodes on arm/thumb-2, resolves #19502 2011-08-16 22:39:00 +00:00
armins.dat * patch by Jeppe Johansen to support jumptable generation for case nodes on arm/thumb-2, resolves #19502 2011-08-16 22:39:00 +00:00
armnop.inc
armop.inc * patch by Jeppe Johansen to support jumptable generation for case nodes on arm/thumb-2, resolves #19502 2011-08-16 22:39:00 +00:00
armreg.dat + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
armtab.inc
cgcpu.pas * use r7 instead of r11 as frame pointer on Darwin/iOS, and make sure r7 2012-03-29 20:54:33 +00:00
cpubase.pas patches by Nico Erfurth to improve the arm peephole optimizer: 2012-04-24 18:25:19 +00:00
cpuinfo.pas + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
cpunode.pas
cpupara.pas * use correct result registers for in64 results on armbe, resolves #21731 2012-04-20 18:07:06 +00:00
cpupi.pas * use r7 instead of r11 as frame pointer on Darwin/iOS, and make sure r7 2012-03-29 20:54:33 +00:00
cputarg.pas
itcpugas.pas
narmadd.pas + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
narmcal.pas + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
narmcnv.pas + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
narmcon.pas
narminl.pas + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
narmmat.pas + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
narmset.pas * forgotten part of r18233 2011-08-16 22:44:50 +00:00
pp.lpi.template
raarm.pas o patch by Jeppe Johansen to fix mantis #17472: 2010-12-24 15:54:39 +00:00
raarmgas.pas Use aint type local variable in read_index_shift to avoid wrong typecast 2011-11-03 10:06:36 +00:00
rarmcon.inc + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
rarmdwa.inc
rarmnor.inc
rarmnum.inc + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
rarmrni.inc + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
rarmsri.inc + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
rarmsta.inc
rarmstd.inc + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
rarmsup.inc + support for the ARM hard float EABI on Linux (patch by Peter Green): 2012-03-29 20:50:09 +00:00
rgcpu.pas * patch by Jeppe Johansen to avoid corruption of frame/stack pointer by pre/post indexed operations, resolves #19679 2011-08-16 22:43:30 +00:00