diff options
author | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-03-07 23:09:03 +0000 |
---|---|---|
committer | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-03-07 23:09:03 +0000 |
commit | 0700e91c56dacca959c7271f87814ecf161aa3d5 (patch) | |
tree | 95c9dfa07e9f70aade632dc8e7a06a542ca9540e /compiler/i8086/cpuinfo.pas | |
parent | 9c6e72e91bf8e84b477bd803689d4a0e6f2e2a0e (diff) | |
download | fpc-0700e91c56dacca959c7271f87814ecf161aa3d5.tar.gz |
the basic i8086 units: cpuinfo and cpubase
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/i8086@23716 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/i8086/cpuinfo.pas')
-rw-r--r-- | compiler/i8086/cpuinfo.pas | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/compiler/i8086/cpuinfo.pas b/compiler/i8086/cpuinfo.pas new file mode 100644 index 0000000000..7ff0f1a841 --- /dev/null +++ b/compiler/i8086/cpuinfo.pas @@ -0,0 +1,130 @@ +{ + Copyright (c) 1998-2004 by Florian Klaempfl + + Basic Processor information + + 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 = extended; + ts32real = single; + ts64real = double; + ts80real = extended; + ts128real = type extended; + ts64comp = type extended; + + pbestreal=^bestreal; + + { possible supported processors for this target } + tcputype = + (cpu_none, + cpu_8086, + cpu_186, + cpu_286, + cpu_386, + cpu_Pentium, + cpu_Pentium2, + cpu_Pentium3, + cpu_Pentium4, + cpu_PentiumM + ); + + tfputype = + (fpu_none, +// fpu_soft, + fpu_x87, + fpu_sse, + fpu_sse2, + fpu_sse3, + fpu_ssse3, + fpu_sse41, + fpu_sse42, + fpu_avx + ); + + +Const + { calling conventions supported by the code generator } + supported_calling_conventions : tproccalloptions = [ + pocall_internproc, + pocall_register, + pocall_safecall, + pocall_stdcall, + pocall_cdecl, + pocall_cppdecl, + pocall_far16, + pocall_pascal, + pocall_oldfpccall, + pocall_mwpascal + ]; + + cputypestr : array[tcputype] of string[10] = ('', + '8086', + '80186', + '80286', + '80386', + 'PENTIUM', + 'PENTIUM2', + 'PENTIUM3', + 'PENTIUM4', + 'PENTIUMM' + ); + + fputypestr : array[tfputype] of string[6] = ('', +// 'SOFT', + 'X87', + 'SSE', + 'SSE2', + 'SSE3', + 'SSSE3', + 'SSE41', + 'SSE42', + 'AVX' + ); + + sse_singlescalar : set of tfputype = [fpu_sse,fpu_sse2,fpu_sse3]; + sse_doublescalar : set of tfputype = [fpu_sse2,fpu_sse3]; + + { 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_peephole,cs_opt_regvar,cs_opt_stackframe, + cs_opt_asmcse,cs_opt_loopunroll,cs_opt_uncertain, + cs_opt_tailrecursion,cs_opt_nodecse,cs_useebp, + cs_opt_reorder_fields,cs_opt_fastmath]; + + level1optimizerswitches = genericlevel1optimizerswitches + [cs_opt_peephole]; + level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches + + [cs_opt_regvar,cs_opt_stackframe,cs_opt_tailrecursion,cs_opt_nodecse]; + level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}]; + level4optimizerswitches = genericlevel4optimizerswitches + level3optimizerswitches + [cs_useebp]; + +Implementation + +end. |