+ cpu capability CPUX86_HAS_CMOV

git-svn-id: trunk@29776 -
This commit is contained in:
florian 2015-02-21 20:47:40 +00:00
parent 6ef8a8afc9
commit de17e9fa1c
4 changed files with 17 additions and 15 deletions

View File

@ -151,7 +151,8 @@ Const
type type
tcpuflags = tcpuflags =
(CPUX86_HAS_SSEUNIT, (CPUX86_HAS_CMOV,
CPUX86_HAS_SSEUNIT,
CPUX86_HAS_BMI1, CPUX86_HAS_BMI1,
CPUX86_HAS_BMI2, CPUX86_HAS_BMI2,
CPUX86_HAS_POPCNT, CPUX86_HAS_POPCNT,
@ -167,13 +168,13 @@ type
{ cpu_none } [], { cpu_none } [],
{ cpu_386 } [], { cpu_386 } [],
{ cpu_Pentium } [], { cpu_Pentium } [],
{ cpu_Pentium2 } [], { cpu_Pentium2 } [CPUX86_HAS_CMOV],
{ cpu_Pentium3 } [CPUX86_HAS_SSEUNIT], { cpu_Pentium3 } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT],
{ cpu_Pentium4 } [CPUX86_HAS_SSEUNIT], { cpu_Pentium4 } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT],
{ cpu_PentiumM } [CPUX86_HAS_SSEUNIT], { cpu_PentiumM } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT],
{ cpu_core_i } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT], { cpu_core_i } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT],
{ cpu_core_avx } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT], { cpu_core_avx } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT],
{ cpu_core_avx2 } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT,CPUX86_HAS_BMI1,CPUX86_HAS_BMI2,CPUX86_HAS_LZCNT,CPUX86_HAS_MOVBE,CPUX86_HAS_FMA] { cpu_core_avx2 } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT,CPUX86_HAS_BMI1,CPUX86_HAS_BMI2,CPUX86_HAS_LZCNT,CPUX86_HAS_MOVBE,CPUX86_HAS_FMA]
); );

View File

@ -2076,7 +2076,7 @@ begin
end; end;
end; end;
end; end;
if (current_settings.cputype>=cpu_Pentium2) then if CPUX86_HAS_CMOV in cpu_capabilities[current_settings.cputype] then
begin begin
{ check for { check for
jCC xxx jCC xxx

View File

@ -609,7 +609,7 @@ implementation
hp : taicpu; hp : taicpu;
begin begin
{$ifdef i386} {$ifdef i386}
if current_settings.cputype<cpu_Pentium2 then if not(CPUX86_HAS_CMOV in cpu_capabilities[current_settings.cputype]) then
begin begin
opsize:=def_cgsize(left.resultdef); opsize:=def_cgsize(left.resultdef);
secondpass(left); secondpass(left);

View File

@ -143,7 +143,8 @@ Const
type type
tcpuflags = tcpuflags =
(CPUX86_HAS_SSEUNIT, (CPUX86_HAS_CMOV,
CPUX86_HAS_SSEUNIT,
CPUX86_HAS_BMI1, CPUX86_HAS_BMI1,
CPUX86_HAS_BMI2, CPUX86_HAS_BMI2,
CPUX86_HAS_POPCNT, CPUX86_HAS_POPCNT,
@ -157,10 +158,10 @@ type
const const
cpu_capabilities : array[tcputype] of set of tcpuflags = ( cpu_capabilities : array[tcputype] of set of tcpuflags = (
{ cpu_none } [], { cpu_none } [],
{ Athlon64 } [CPUX86_HAS_SSEUNIT], { Athlon64 } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT],
{ cpu_core_i } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT], { cpu_core_i } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT],
{ cpu_core_avx } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT], { cpu_core_avx } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT],
{ cpu_core_avx2 } [CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT,CPUX86_HAS_BMI1,CPUX86_HAS_BMI2,CPUX86_HAS_LZCNT,CPUX86_HAS_MOVBE,CPUX86_HAS_FMA] { cpu_core_avx2 } [CPUX86_HAS_CMOV,CPUX86_HAS_SSEUNIT,CPUX86_HAS_POPCNT,CPUX86_HAS_AVXUNIT,CPUX86_HAS_BMI1,CPUX86_HAS_BMI2,CPUX86_HAS_LZCNT,CPUX86_HAS_MOVBE,CPUX86_HAS_FMA]
); );
Implementation Implementation