Difference between revisions of "Language related articles"
From Free Pascal wiki
Jump to navigationJump to searchLine 10: | Line 10: | ||
* {$fputype xxx) to select a certain fpu style or -Cfxxx on command line/cfg file | * {$fputype xxx) to select a certain fpu style or -Cfxxx on command line/cfg file | ||
** all: soft (not yet implemented) | ** all: soft (not yet implemented) | ||
+ | ** i386: x87, sse, sse2 | ||
+ | *** code compiled with sse uses the sse to do calculations with the single data type. This code runs only on Pentium III and above and AthlonXP and above | ||
+ | *** code compiled with sse uses the sse unit to do calculations with the single and double data type. This code runs only on PentiumIV and above and Athlon64 and above | ||
** x86-64: sse64 | ** x86-64: sse64 | ||
** powerpc: standard | ** powerpc: standard | ||
** arm: libgcc, fpa, fpa10, fpa11, vfp | ** arm: libgcc, fpa, fpa10, fpa11, vfp | ||
− | + | ||
− | + | === SSE Usage === | |
− | |||
To determine the supported instruction set, use the is_sse_cpu and is_sse2_cpu of the mmx unit. Because the sse code is usually faster than x87-fpu code, it's recommended to use these switches for heavy floating point calculations. If you want an application which runs on all fpu architectures, a possible solution is to put the code into an include file and include this file twice into your program: once compiled with e.g. -Cfsse2 and once without. Use the e.g. is_sse2_cpu variable to select the appropriate code:<br> | To determine the supported instruction set, use the is_sse_cpu and is_sse2_cpu of the mmx unit. Because the sse code is usually faster than x87-fpu code, it's recommended to use these switches for heavy floating point calculations. If you want an application which runs on all fpu architectures, a possible solution is to put the code into an include file and include this file twice into your program: once compiled with e.g. -Cfsse2 and once without. Use the e.g. is_sse2_cpu variable to select the appropriate code:<br> | ||
{$fputype x87} | {$fputype x87} |
Revision as of 15:54, 26 December 2003
Things FPC 1.9.x currently doesn't support
- The "implements" style delegation.
- dispinterface
- Slice(dyn array) seems to have problems.
- Reintroduce
New in 1.9.x (not yet in the docs)
- {$fputype xxx) to select a certain fpu style or -Cfxxx on command line/cfg file
- all: soft (not yet implemented)
- i386: x87, sse, sse2
- code compiled with sse uses the sse to do calculations with the single data type. This code runs only on Pentium III and above and AthlonXP and above
- code compiled with sse uses the sse unit to do calculations with the single and double data type. This code runs only on PentiumIV and above and Athlon64 and above
- x86-64: sse64
- powerpc: standard
- arm: libgcc, fpa, fpa10, fpa11, vfp
SSE Usage
To determine the supported instruction set, use the is_sse_cpu and is_sse2_cpu of the mmx unit. Because the sse code is usually faster than x87-fpu code, it's recommended to use these switches for heavy floating point calculations. If you want an application which runs on all fpu architectures, a possible solution is to put the code into an include file and include this file twice into your program: once compiled with e.g. -Cfsse2 and once without. Use the e.g. is_sse2_cpu variable to select the appropriate code:
{$fputype x87} procedure calc_x87; {$i mymathcode.inc}
{$fputype sse2} procedure calc_sse2; {$i mymathcode.inc}
begin if is_sse2_cpu then calc_sse2 else< calc_x87; end;