mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 23:01:55 +02:00
* check more cpuid flags in the cpu units
This commit is contained in:
parent
d1af2c7007
commit
6bbefcae9e
@ -46,6 +46,8 @@ unit cpu;
|
|||||||
function AVX512VBMISupport: boolean;inline;
|
function AVX512VBMISupport: boolean;inline;
|
||||||
function AVX512VBMI2Support: boolean;inline;
|
function AVX512VBMI2Support: boolean;inline;
|
||||||
function AVX512VNNISupport: boolean;inline;
|
function AVX512VNNISupport: boolean;inline;
|
||||||
|
function VAESSupport: boolean;inline;
|
||||||
|
function VCLMULSupport: boolean;inline;
|
||||||
function AVX512BITALGSupport: boolean;inline;
|
function AVX512BITALGSupport: boolean;inline;
|
||||||
function RDSEEDSupport: boolean;inline;
|
function RDSEEDSupport: boolean;inline;
|
||||||
function ADXSupport: boolean;inline;
|
function ADXSupport: boolean;inline;
|
||||||
@ -84,6 +86,8 @@ unit cpu;
|
|||||||
_AVX512VLSupport,
|
_AVX512VLSupport,
|
||||||
_AVX512VBMISupport,
|
_AVX512VBMISupport,
|
||||||
_AVX512VBMI2Support,
|
_AVX512VBMI2Support,
|
||||||
|
_VAESSupport,
|
||||||
|
_VCLMULSupport,
|
||||||
_AVX512VNNISupport,
|
_AVX512VNNISupport,
|
||||||
_AVX512BITALGSupport,
|
_AVX512BITALGSupport,
|
||||||
_RDSEEDSupport,
|
_RDSEEDSupport,
|
||||||
@ -273,6 +277,8 @@ unit cpu;
|
|||||||
_AVX512BWSupport:=(_ebx and $40000000)<>0;
|
_AVX512BWSupport:=(_ebx and $40000000)<>0;
|
||||||
_AVX512VBMISupport:=(_ecx and $00000002)<>0;
|
_AVX512VBMISupport:=(_ecx and $00000002)<>0;
|
||||||
_AVX512VBMI2Support:=(_ecx and $00000040)<>0;
|
_AVX512VBMI2Support:=(_ecx and $00000040)<>0;
|
||||||
|
_VAESSupport:=(_ecx and $00000200)<>0;
|
||||||
|
_VCLMULSupport:=(_ecx and $00000400)<>0;
|
||||||
_AVX512VNNISupport:=(_ecx and $00000800)<>0;
|
_AVX512VNNISupport:=(_ecx and $00000800)<>0;
|
||||||
_AVX512BITALGSupport:=(_ecx and $00001000)<>0;
|
_AVX512BITALGSupport:=(_ecx and $00001000)<>0;
|
||||||
_SHASupport:=(_ebx and $20000000)<>0;
|
_SHASupport:=(_ebx and $20000000)<>0;
|
||||||
@ -371,6 +377,18 @@ unit cpu;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function VAESSupport: boolean;inline;
|
||||||
|
begin
|
||||||
|
result:=_VAESSupport;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function VCLMULSupport: boolean;inline;
|
||||||
|
begin
|
||||||
|
result:=_VCLMULSupport;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
function AVX512VNNISupport: boolean;inline;
|
function AVX512VNNISupport: boolean;inline;
|
||||||
begin
|
begin
|
||||||
result:=_AVX512VNNISupport;
|
result:=_AVX512VNNISupport;
|
||||||
|
@ -43,6 +43,8 @@ unit cpu;
|
|||||||
function AVX512VBMISupport: boolean;inline;
|
function AVX512VBMISupport: boolean;inline;
|
||||||
function AVX512VBMI2Support: boolean;inline;
|
function AVX512VBMI2Support: boolean;inline;
|
||||||
function AVX512VNNISupport: boolean;inline;
|
function AVX512VNNISupport: boolean;inline;
|
||||||
|
function VAESSupport: boolean;inline;
|
||||||
|
function VCLMULSupport: boolean;inline;
|
||||||
function AVX512BITALGSupport: boolean;inline;
|
function AVX512BITALGSupport: boolean;inline;
|
||||||
function RDSEEDSupport: boolean;inline;
|
function RDSEEDSupport: boolean;inline;
|
||||||
function ADXSupport: boolean;inline;
|
function ADXSupport: boolean;inline;
|
||||||
@ -83,6 +85,8 @@ unit cpu;
|
|||||||
_AVX512VLSupport,
|
_AVX512VLSupport,
|
||||||
_AVX512VBMISupport,
|
_AVX512VBMISupport,
|
||||||
_AVX512VBMI2Support,
|
_AVX512VBMI2Support,
|
||||||
|
_VAESSupport,
|
||||||
|
_VCLMULSupport,
|
||||||
_AVX512VNNISupport,
|
_AVX512VNNISupport,
|
||||||
_AVX512BITALGSupport,
|
_AVX512BITALGSupport,
|
||||||
_RDSEEDSupport,
|
_RDSEEDSupport,
|
||||||
@ -249,6 +253,8 @@ unit cpu;
|
|||||||
_AVX512VLSupport:=(_ebx and $80000000)<>0;
|
_AVX512VLSupport:=(_ebx and $80000000)<>0;
|
||||||
_AVX512VBMISupport:=(_ecx and $00000002)<>0;
|
_AVX512VBMISupport:=(_ecx and $00000002)<>0;
|
||||||
_AVX512VBMI2Support:=(_ecx and $00000040)<>0;
|
_AVX512VBMI2Support:=(_ecx and $00000040)<>0;
|
||||||
|
_VAESSupport:=(_ecx and $00000200)<>0;
|
||||||
|
_VCLMULSupport:=(_ecx and $00000400)<>0;
|
||||||
_AVX512VNNISupport:=(_ecx and $00000800)<>0;
|
_AVX512VNNISupport:=(_ecx and $00000800)<>0;
|
||||||
_AVX512BITALGSupport:=(_ecx and $00001000)<>0;
|
_AVX512BITALGSupport:=(_ecx and $00001000)<>0;
|
||||||
_BMI1Support:=(_ebx and $8)<>0;
|
_BMI1Support:=(_ebx and $8)<>0;
|
||||||
@ -342,6 +348,18 @@ unit cpu;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function VAESSupport: boolean;inline;
|
||||||
|
begin
|
||||||
|
result:=_VAESSupport;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function VCLMULSupport: boolean;inline;
|
||||||
|
begin
|
||||||
|
result:=_VCLMULSupport;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
function AVX512VNNISupport: boolean;inline;
|
function AVX512VNNISupport: boolean;inline;
|
||||||
begin
|
begin
|
||||||
result:=_AVX512VNNISupport;
|
result:=_AVX512VNNISupport;
|
||||||
|
@ -4,6 +4,17 @@ uses
|
|||||||
cpu;
|
cpu;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
write('AES support: ');
|
||||||
|
if AESSupport then
|
||||||
|
begin
|
||||||
|
writeln('yes');
|
||||||
|
asm
|
||||||
|
pxor %xmm0,%xmm0
|
||||||
|
aesenc %xmm0,%xmm0
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
writeln('no');
|
||||||
write('AVX support: ');
|
write('AVX support: ');
|
||||||
if AVXSupport then
|
if AVXSupport then
|
||||||
begin
|
begin
|
||||||
@ -79,6 +90,17 @@ begin
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
writeln('no');
|
writeln('no');
|
||||||
|
write('VAES support: ');
|
||||||
|
if VAESSupport then
|
||||||
|
begin
|
||||||
|
writeln('yes');
|
||||||
|
asm
|
||||||
|
vpxor %ymm0,%ymm0,%ymm0
|
||||||
|
vaesenc %ymm0,%ymm0,%ymm0
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
writeln('no');
|
||||||
write('FMA support: ');
|
write('FMA support: ');
|
||||||
if FMASupport then
|
if FMASupport then
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user