mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 05:59:27 +02:00
* Ignore FPU/MM registers in tcg.(de)allocallcpuregisters if they are not used in current procedure. This is consistent with logic of tcgcallnode and removes a lot of useless xmm regallocs on win64.
git-svn-id: trunk@21036 -
This commit is contained in:
parent
3edaa66ee7
commit
5f93d9992a
@ -762,9 +762,11 @@ implementation
|
|||||||
begin
|
begin
|
||||||
alloccpuregisters(list,R_INTREGISTER,paramanager.get_volatile_registers_int(pocall_default));
|
alloccpuregisters(list,R_INTREGISTER,paramanager.get_volatile_registers_int(pocall_default));
|
||||||
{$if not(defined(i386)) and not(defined(avr))}
|
{$if not(defined(i386)) and not(defined(avr))}
|
||||||
alloccpuregisters(list,R_FPUREGISTER,paramanager.get_volatile_registers_fpu(pocall_default));
|
if uses_registers(R_FPUREGISTER) then
|
||||||
|
alloccpuregisters(list,R_FPUREGISTER,paramanager.get_volatile_registers_fpu(pocall_default));
|
||||||
{$ifdef cpumm}
|
{$ifdef cpumm}
|
||||||
alloccpuregisters(list,R_MMREGISTER,paramanager.get_volatile_registers_mm(pocall_default));
|
if uses_registers(R_MMREGISTER) then
|
||||||
|
alloccpuregisters(list,R_MMREGISTER,paramanager.get_volatile_registers_mm(pocall_default));
|
||||||
{$endif cpumm}
|
{$endif cpumm}
|
||||||
{$endif not(defined(i386)) and not(defined(avr))}
|
{$endif not(defined(i386)) and not(defined(avr))}
|
||||||
end;
|
end;
|
||||||
@ -783,9 +785,11 @@ implementation
|
|||||||
begin
|
begin
|
||||||
dealloccpuregisters(list,R_INTREGISTER,paramanager.get_volatile_registers_int(pocall_default));
|
dealloccpuregisters(list,R_INTREGISTER,paramanager.get_volatile_registers_int(pocall_default));
|
||||||
{$if not(defined(i386)) and not(defined(avr))}
|
{$if not(defined(i386)) and not(defined(avr))}
|
||||||
dealloccpuregisters(list,R_FPUREGISTER,paramanager.get_volatile_registers_fpu(pocall_default));
|
if uses_registers(R_FPUREGISTER) then
|
||||||
|
dealloccpuregisters(list,R_FPUREGISTER,paramanager.get_volatile_registers_fpu(pocall_default));
|
||||||
{$ifdef cpumm}
|
{$ifdef cpumm}
|
||||||
dealloccpuregisters(list,R_MMREGISTER,paramanager.get_volatile_registers_mm(pocall_default));
|
if uses_registers(R_MMREGISTER) then
|
||||||
|
dealloccpuregisters(list,R_MMREGISTER,paramanager.get_volatile_registers_mm(pocall_default));
|
||||||
{$endif cpumm}
|
{$endif cpumm}
|
||||||
{$endif not(defined(i386)) and not(defined(avr))}
|
{$endif not(defined(i386)) and not(defined(avr))}
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user