MathgeomGLS
33 строки · 948.0 Байт
1{ Don't convert Single to Double on x64 }
2{$EXCESSPRECISION OFF}
3
4{ Enums must be scoped }
5{$SCOPEDENUMS ON}
6
7{$DEFINE FM_PASCAL}
8{$DEFINE FM_INLINE}
9
10{$IF not Defined(FM_NOSIMD)}
11{$IF Defined(CPUARM)}
12{ On Arm, use NEON/Arm64 optimizations.
13Keep FM_INLINE for the functions that call the optimized versions. }
14{$UNDEF FM_PASCAL}
15{$DEFINE FM_ARM}
16{$ELSEIF Defined(MACOS64)}
17{ On MacOS 64-bit, use SSE2 optimizations using a linked object file. }
18{$UNDEF FM_PASCAL}
19{$DEFINE FM_X64}
20{$ELSEIF Defined(CPUX86)}
21{ On x86-32 use SSE2 optimizations.
22Undefine FM_INLINE since assembly functions cannot be inlined. }
23{$UNDEF FM_PASCAL}
24{$UNDEF FM_INLINE}
25{$DEFINE FM_X86}
26{$ELSEIF Defined(CPUX64)}
27{ On x86-64, use SSE2 optimizations.
28Undefine FM_INLINE since assembly functions cannot be inlined. }
29{$UNDEF FM_PASCAL}
30{$UNDEF FM_INLINE}
31{$DEFINE FM_X64}
32{$ENDIF}
33{$ENDIF}