mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-07-01 05:28:17 +02:00

order to minimise memory losses due to alignment padding. Not yet enabled by default at any optimization level, but can be (de)activated separately via -Oo(no)orderfields o added separate tdef.structalignment method that returns the alignment of a type when it appears in a record/object/class (factors out AIX-specific double alignment in structs) o changed the handling of the offset of a delegate interface implemented via a field, by taking the field offset on demand rather than at declaration time (because the ordering optimization causes the offsets of fields to be unknown until the entire declaration has been parsed) git-svn-id: trunk@21947 -
91 lines
2.6 KiB
ObjectPascal
91 lines
2.6 KiB
ObjectPascal
{
|
|
Copyright (c) 1998-2002 by Florian Klaempfl
|
|
|
|
Basic Processor information for the SPARC
|
|
|
|
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 cpuinfo;
|
|
|
|
{$i fpcdefs.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
globtype;
|
|
|
|
type
|
|
bestreal = double;
|
|
ts32real = single;
|
|
ts64real = double;
|
|
ts80real = extended;
|
|
ts128real = type extended;
|
|
ts64comp = type extended;
|
|
pbestreal=^bestreal;
|
|
|
|
{ possible supported processors for this target }
|
|
tcputype=(cpu_none,
|
|
cpu_SPARC_V7,
|
|
cpu_SPARC_V8,
|
|
cpu_SPARC_V9
|
|
);
|
|
|
|
tfputype =(fpu_none,
|
|
fpu_soft,
|
|
fpu_hard
|
|
);
|
|
|
|
|
|
const
|
|
{ calling conventions supported by the code generator }
|
|
supported_calling_conventions : tproccalloptions = [
|
|
pocall_internproc,
|
|
pocall_stdcall,
|
|
pocall_cdecl,
|
|
pocall_cppdecl
|
|
];
|
|
|
|
cputypestr : array[tcputype] of string[10] = ('',
|
|
'SPARC V7',
|
|
'SPARC V8',
|
|
'SPARC V9'
|
|
);
|
|
|
|
fputypestr : array[tfputype] of string[6] = ('',
|
|
'SOFT',
|
|
'HARD'
|
|
);
|
|
|
|
{ Supported optimizations, only used for information }
|
|
supported_optimizerswitches = genericlevel1optimizerswitches+
|
|
genericlevel2optimizerswitches+
|
|
genericlevel3optimizerswitches-
|
|
{ no need to write info about those }
|
|
[cs_opt_level1,cs_opt_level2,cs_opt_level3]+
|
|
[cs_opt_regvar,cs_opt_loopunroll,
|
|
cs_opt_tailrecursion,cs_opt_nodecse,
|
|
cs_opt_reorder_fields];
|
|
|
|
level1optimizerswitches = genericlevel1optimizerswitches;
|
|
level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches +
|
|
[cs_opt_regvar,cs_opt_tailrecursion,cs_opt_nodecse];
|
|
level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}];
|
|
|
|
implementation
|
|
|
|
end.
|