Browse Source

+ set defines if fast fma is available

git-svn-id: trunk@27768 -
florian 11 years ago
parent
commit
0bce584bae
1 changed files with 11 additions and 1 deletions
  1. 11 1
      compiler/options.pas

+ 11 - 1
compiler/options.pas

@@ -27,7 +27,7 @@ interface
 
 uses
   cfileutl,
-  globtype,globals,verbose,systems,cpuinfo, comprsrc;
+  globtype,globals,verbose,systems,cpuinfo,comprsrc;
 
 Type
   TOption=class
@@ -3542,6 +3542,16 @@ if (target_info.abi = abi_eabihf) then
   def_system_macro('FPC_HAS_INTERNAL_BSF');
   def_system_macro('FPC_HAS_INTERNAL_BSR');
 {$endif}
+
+{ hardware FMA support }
+{$if defined(i386) or defined(x86_64)}
+  if (cpu_capabilities[current_settings.cputype]*[CPUX86_HAS_FMA,CPUX86_HAS_FMA4])<>[]
+    begin
+      def_system_macro('FPC_HAS_FAST_FMA_SINGLE');
+      def_system_macro('FPC_HAS_FAST_FMA_DOUBLE');
+    end;
+{$endif defined(i386) or defined(x86_64)}
+
 {$if defined(arm)}
   { it is determined during system unit compilation if clz is used for bsf or not,
     this is not perfect but the current implementation bsf/bsr does not allow another