Browse Source

+ TSCSupport

florian 1 year ago
parent
commit
567187d4ba
2 changed files with 26 additions and 17 deletions
  1. 9 0
      rtl/i386/cpu.pp
  2. 17 17
      rtl/x86_64/cpu.pp

+ 9 - 0
rtl/i386/cpu.pp

@@ -46,6 +46,7 @@ type
     { returns the contents of the cr0 register }
     { returns the contents of the cr0 register }
     function cr0 : longint;
     function cr0 : longint;
 
 
+    function TSCSupport: boolean;inline;
     function MMXSupport: boolean;inline;
     function MMXSupport: boolean;inline;
     function CMOVSupport: boolean;inline;
     function CMOVSupport: boolean;inline;
     function InterlockedCompareExchange128Support: boolean;
     function InterlockedCompareExchange128Support: boolean;
@@ -92,6 +93,7 @@ type
 
 
 {$ASMMODE INTEL}
 {$ASMMODE INTEL}
     var
     var
+      _TSCSupport,
       _MMXSupport,
       _MMXSupport,
       _CMOVSupport,
       _CMOVSupport,
       _AESSupport,
       _AESSupport,
@@ -269,6 +271,7 @@ type
            begin
            begin
               maxcpuidvalue:=CPUID(0).eax;
               maxcpuidvalue:=CPUID(0).eax;
               cpuid1:=CPUID(1);
               cpuid1:=CPUID(1);
+              _TSCSupport:=(cpuid1.edx and $20)<>0;
               _MMXSupport:=(cpuid1.edx and $800000)<>0;
               _MMXSupport:=(cpuid1.edx and $800000)<>0;
               _CMOVSupport:=(cpuid1.edx and $8000)<>0;
               _CMOVSupport:=(cpuid1.edx and $8000)<>0;
               _AESSupport:=(cpuid1.ecx and $2000000)<>0;
               _AESSupport:=(cpuid1.ecx and $2000000)<>0;
@@ -333,6 +336,12 @@ type
       end;
       end;
 
 
 
 
+    function TSCSupport: boolean;
+      begin
+        result:=_TSCSupport;
+      end;
+
+
     function MMXSupport: boolean;
     function MMXSupport: boolean;
       begin
       begin
         result:=_MMXSupport;
         result:=_MMXSupport;

+ 17 - 17
rtl/x86_64/cpu.pp

@@ -48,13 +48,13 @@ type
     function AESSupport : boolean;inline;
     function AESSupport : boolean;inline;
     function AVXSupport : boolean;inline;
     function AVXSupport : boolean;inline;
     function AVX2Support: boolean;inline;
     function AVX2Support: boolean;inline;
-    function AVX512FSupport: boolean;inline;    
-    function AVX512DQSupport: boolean;inline;    
-    function AVX512IFMASupport: boolean;inline;    
-    function AVX512PFSupport: boolean;inline;    
-    function AVX512ERSupport: boolean;inline;    
-    function AVX512CDSupport: boolean;inline;    
-    function AVX512BWSupport: boolean;inline;    
+    function AVX512FSupport: boolean;inline;
+    function AVX512DQSupport: boolean;inline;
+    function AVX512IFMASupport: boolean;inline;
+    function AVX512PFSupport: boolean;inline;
+    function AVX512ERSupport: boolean;inline;
+    function AVX512CDSupport: boolean;inline;
+    function AVX512BWSupport: boolean;inline;
     function AVX512VLSupport: boolean;inline;
     function AVX512VLSupport: boolean;inline;
     function AVX512VBMISupport: boolean;inline;
     function AVX512VBMISupport: boolean;inline;
     function AVX512VBMI2Support: boolean;inline;
     function AVX512VBMI2Support: boolean;inline;
@@ -64,7 +64,7 @@ type
     function AVX512BITALGSupport: boolean;inline;
     function AVX512BITALGSupport: boolean;inline;
     function RDSEEDSupport: boolean;inline;
     function RDSEEDSupport: boolean;inline;
     function ADXSupport: boolean;inline;
     function ADXSupport: boolean;inline;
-    function SHASupport: boolean;inline;    
+    function SHASupport: boolean;inline;
     function FMASupport: boolean;inline;
     function FMASupport: boolean;inline;
     function CMPXCHG16BSupport: boolean;inline;
     function CMPXCHG16BSupport: boolean;inline;
     function POPCNTSupport: boolean;inline;
     function POPCNTSupport: boolean;inline;
@@ -349,37 +349,37 @@ type
       end;
       end;
 
 
 
 
-    function AVX512IFMASupport: boolean;inline;    
+    function AVX512IFMASupport: boolean;inline;
       begin
       begin
         result:=_AVX512IFMASupport;
         result:=_AVX512IFMASupport;
       end;
       end;
 
 
 
 
-    function AVX512PFSupport: boolean;inline;    
+    function AVX512PFSupport: boolean;inline;
       begin
       begin
         result:=_AVX512PFSupport;
         result:=_AVX512PFSupport;
       end;
       end;
 
 
 
 
-    function AVX512ERSupport: boolean;inline;    
+    function AVX512ERSupport: boolean;inline;
       begin
       begin
         result:=_AVX512ERSupport;
         result:=_AVX512ERSupport;
       end;
       end;
 
 
 
 
-    function AVX512CDSupport: boolean;inline;    
+    function AVX512CDSupport: boolean;inline;
       begin
       begin
         result:=_AVX512CDSupport;
         result:=_AVX512CDSupport;
       end;
       end;
 
 
 
 
-    function AVX512BWSupport: boolean;inline;    
+    function AVX512BWSupport: boolean;inline;
       begin
       begin
         result:=_AVX512BWSupport;
         result:=_AVX512BWSupport;
       end;
       end;
 
 
 
 
-    function AVX512VLSupport: boolean;inline;    
+    function AVX512VLSupport: boolean;inline;
       begin
       begin
         result:=_AVX512VLSupport;
         result:=_AVX512VLSupport;
       end;
       end;
@@ -409,13 +409,13 @@ type
       end;
       end;
 
 
 
 
-    function AVX512VNNISupport: boolean;inline;    
+    function AVX512VNNISupport: boolean;inline;
       begin
       begin
         result:=_AVX512VNNISupport;
         result:=_AVX512VNNISupport;
       end;
       end;
 
 
 
 
-    function AVX512BITALGSupport: boolean;inline;    
+    function AVX512BITALGSupport: boolean;inline;
       begin
       begin
         result:=_AVX512BITALGSupport;
         result:=_AVX512BITALGSupport;
       end;
       end;
@@ -433,7 +433,7 @@ type
       end;
       end;
 
 
 
 
-    function SHASupport: boolean;inline;    
+    function SHASupport: boolean;inline;
       begin
       begin
         result:=_SHASupport;
         result:=_SHASupport;
       end;
       end;