From 871fd8d2b8a6dc3cf2fb699d651ac572e8c97377 Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 20 Feb 2005 19:11:04 +0000 Subject: [PATCH] * initial commit --- compiler/arm/aoptcpu.pas | 48 +++++++++++++++ compiler/arm/aoptcpub.pas | 126 ++++++++++++++++++++++++++++++++++++++ compiler/arm/aoptcpuc.pas | 48 +++++++++++++++ compiler/arm/aoptcpud.pas | 50 +++++++++++++++ 4 files changed, 272 insertions(+) create mode 100644 compiler/arm/aoptcpu.pas create mode 100644 compiler/arm/aoptcpub.pas create mode 100644 compiler/arm/aoptcpuc.pas create mode 100644 compiler/arm/aoptcpud.pas diff --git a/compiler/arm/aoptcpu.pas b/compiler/arm/aoptcpu.pas new file mode 100644 index 0000000000..bcfae7fd0b --- /dev/null +++ b/compiler/arm/aoptcpu.pas @@ -0,0 +1,48 @@ +{ + $Id$ + Copyright (c) 1998-2002 by Jonas Maebe, member of the Free Pascal + Development Team + + This unit implements the ARM optimizer object + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + **************************************************************************** +} + + +Unit aoptcpu; + +Interface + +uses cpubase, aoptobj, aoptcpub; + +Type + TAOptCpu = Object(TAoptObj) + { uses the same constructor as TAopObj } + End; + +Implementation + +End. +{ + $Log$ + Revision 1.1 2005-02-20 19:11:04 florian + * initial commit + + Revision 1.6 2005/02/14 17:13:10 peter + * truncate log + +} diff --git a/compiler/arm/aoptcpub.pas b/compiler/arm/aoptcpub.pas new file mode 100644 index 0000000000..7c8cdc926a --- /dev/null +++ b/compiler/arm/aoptcpub.pas @@ -0,0 +1,126 @@ + { + $Id$ + Copyright (c) 1998-2002 by Jonas Maebe, member of the Free Pascal + Development Team + + This unit contains several types and constants necessary for the + optimizer to work on the ARM architecture + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + **************************************************************************** +} +Unit aoptcpub; { Assembler OPTimizer CPU specific Base } + +{ enable the following define if memory references can have both a base and } +{ index register in 1 operand } + +{$define RefsHaveIndexReg} + +{ enable the following define if memory references can have a scaled index } + +{ define RefsHaveScale} + +{ enable the following define if memory references can have a segment } +{ override } + +{ define RefsHaveSegment} + +Interface + +Uses + aasmcpu,AOptBase; + +Type + +{ type of a normal instruction } + TInstr = Taicpu; + PInstr = ^TInstr; + +{ ************************************************************************* } +{ **************************** TCondRegs ********************************** } +{ ************************************************************************* } +{ Info about the conditional registers } + TCondRegs = Object + Constructor Init; + Destructor Done; + End; + +{ ************************************************************************* } +{ **************************** TAoptBaseCpu ******************************* } +{ ************************************************************************* } + + TAoptBaseCpu = Object(TAoptBase) + End; + + +{ ************************************************************************* } +{ ******************************* Constants ******************************* } +{ ************************************************************************* } +Const + +{ the maximum number of things (registers, memory, ...) a single instruction } +{ changes } + + MaxCh = 3; + +{ the maximum number of operands an instruction has } + + MaxOps = 3; + +{Oper index of operand that contains the source (reference) with a load } +{instruction } + + LoadSrc = 0; + +{Oper index of operand that contains the destination (register) with a load } +{instruction } + + LoadDst = 1; + +{Oper index of operand that contains the source (register) with a store } +{instruction } + + StoreSrc = 0; + +{Oper index of operand that contains the destination (reference) with a load } +{instruction } + + StoreDst = 1; + +Implementation + +{ ************************************************************************* } +{ **************************** TCondRegs ********************************** } +{ ************************************************************************* } +Constructor TCondRegs.init; +Begin +End; + +Destructor TCondRegs.Done; {$ifdef inl} inline; {$endif inl} +Begin +End; + +End. + +{ + $Log$ + Revision 1.1 2005-02-20 19:11:04 florian + * initial commit + + Revision 1.7 2005/02/14 17:13:10 peter + * truncate log + +} diff --git a/compiler/arm/aoptcpuc.pas b/compiler/arm/aoptcpuc.pas new file mode 100644 index 0000000000..c40b5bbb78 --- /dev/null +++ b/compiler/arm/aoptcpuc.pas @@ -0,0 +1,48 @@ + { + $Id$ + Copyright (c) 1998-2002 by Jonas Maebe, member of the Free Pascal + Development Team + + This unit contains the processor specific implementation of the + assembler optimizer common subexpression elimination object. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + **************************************************************************** +} +unit aoptcpuc; + +Interface + +Uses + AOptCs; + +Type + TRegInfoCpu = Object(TRegInfo) + End; + + +Implementation + +End. +{ + $Log$ + Revision 1.1 2005-02-20 19:11:04 florian + * initial commit + + Revision 1.6 2005/02/14 17:13:10 peter + * truncate log + +} diff --git a/compiler/arm/aoptcpud.pas b/compiler/arm/aoptcpud.pas new file mode 100644 index 0000000000..3ba87b54d2 --- /dev/null +++ b/compiler/arm/aoptcpud.pas @@ -0,0 +1,50 @@ +{ + $Id$ + Copyright (c) 1998-2002 by Jonas Maebe, member of the Free Pascal + Development Team + + This unit contains the processor specific implementation of the + assembler optimizer data flow analyzer. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + **************************************************************************** +} +Unit aoptcpud; + +Interface + +uses + AOptDA; + +Type + PAOptDFACpu = ^TAOptDFACpu; + TAOptDFACpu = Object(TAOptDFA) + End; + +Implementation + + +End. + +{ + $Log$ + Revision 1.1 2005-02-20 19:11:04 florian + * initial commit + + Revision 1.6 2005/02/14 17:13:10 peter + * truncate log + +}