Frage zu den FPC erzeugten instruktionssätzen

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Frage zu den FPC erzeugten instruktionssätzen

Beitrag von Dragon »

mich würde mal interessieren welche instruktionssätze der FPC erzeugen kann also z.b.(SSE,MMX)

und wie lange es im schnitt immer so gedauert hat bis neue unterstützt wurden

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Frage zu den FPC erzeugten instruktionssätzen

Beitrag von marcov »

Gebe ein:

fpc -i

und:

Free Pascal Compiler version 2.6.2

Compiler Date : 2013/02/12
Compiler CPU Target: i386

Supported targets:
GO32 V2 DOS extender
Linux for i386
OS/2
Win32 for i386
FreeBSD/ELF for i386
Solaris for i386 (under development)
Beos for i386 (under development)
NetBSD for i386 (under development)
Netware for i386(clib)
WDOSX DOS extender
OpenBSD for i386 (under development)
OS/2 via EMX
Watcom compatible DOS extenders
Netware for i386(libc)
WinCE for i386
Linux for x64_6432
Darwin for i386
Embedded
Symbian OS for i386
Haiku for i386 (under development)
Native NT for i386 (under development)
Darwin/iPhoneSim for i386

Supported CPU instruction sets:
80386
PENTIUM
PENTIUM2
PENTIUM3
PENTIUM4
PENTIUMM

Supported FPU instruction sets:
X87
SSE
SSE2
SSE3

Supported ABI targets:
DEFAULT
SYSV
AIX
EABI
ARMEB

Supported Optimizations:
REGVAR
UNCERTAIN
STACKFRAME
PEEPHOLE
ASMCSE
LOOPUNROLL
TAILREC
CSE

Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Frage zu den FPC erzeugten instruktionssätzen

Beitrag von marcov »

Und fuer 2.7.1 (trunk):

Free Pascal Compiler version 2.7.1

Compiler date : 2015/01/01
Compiler CPU target: i386

Supported targets (targets marked with '{*}' are under development):
Go32v2: GO32 V2 DOS extender
Linux: Linux for i386
OS2: OS/2
Win32: Win32 for i386
FreeBSD: FreeBSD/ELF for i386
solaris: Solaris for i386 {*}
Beos: Beos for i386 {*}
NetBSD: NetBSD for i386 {*}
Netware: Netware for i386(clib)
WDOSX: WDOSX DOS extender
OpenBSD: OpenBSD for i386 {*}
EMX: OS/2 via EMX
WATCOM: Watcom compatible DOS extenders
Netwlibc: Netware for i386(libc)
WinCE: WinCE for i386
Darwin: Darwin for i386
embedded: Embedded
Symbian: Symbian OS for i386
Haiku: Haiku for i386 {*}
NativeNT: Native NT for i386 {*}
iPhoneSim: Darwin/iPhoneSim for i386
Android: Android for i386
aros: AROS for i386

Supported CPU instruction sets:
80386,PENTIUM,PENTIUM2,PENTIUM3,PENTIUM4,PENTIUMM,COREI,COREAVX
COREAVX2

Supported FPU instruction sets:
X87,SSE,SSE2,SSE3,SSSE3,SSE41,SSE42,AVX,AVX2

Supported inline assembler modes:
STANDARD
ATT
INTEL

Recognized compiler and RTL features:
HEAP,INITFINAL,RTTI,CLASSES,EXCEPTIONS,EXITCODE,ANSISTRINGS,WIDESTRINGS
TEXTIO,CONSOLEIO,FILEIO,RANDOM,VARIANTS,OBJECTS,DYNARRAYS,THREADING
COMMANDARGS,PROCESSES,STACKCHECK,DYNLIBS,SOFTFPU,OBJECTIVEC1,RESOURCES
UNICODESTRINGS

Supported ABI targets:
DEFAULT
OLDWIN32GNU

Supported Optimizations:
REGVAR
UNCERTAIN
STACKFRAME
PEEPHOLE
ASMCSE
LOOPUNROLL
TAILREC
CSE
DFA
USEEBP
ORDERFIELDS
FASTMATH
REMOVEEMPTYPROCS
CONSTPROP

Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS


Es gibt keine Regel wie schnell etwas implementiert wird, das hängt davon ab ob es ein Freiwilligen gibt der darein arbeiten will (zb AVX Support in 2.7.1 ist meistens außerhalb des FPC core team implementiert).

Und das hängt wieder davon ab wie viel solche Optimization wirklich bringen (oft: nicht viel)

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Frage zu den FPC erzeugten instruktionssätzen

Beitrag von Dragon »

vielen dank

Antworten