mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 00:09:17 +02:00
* made some assembler optimizer methods class methods
git-svn-id: trunk@33929 -
This commit is contained in:
parent
e56147ac6e
commit
b274599a47
@ -61,7 +61,7 @@ unit aoptbase;
|
|||||||
{ gets the next tai object after current that contains info relevant }
|
{ gets the next tai object after current that contains info relevant }
|
||||||
{ to the optimizer in p1. If there is none, it returns false and }
|
{ to the optimizer in p1. If there is none, it returns false and }
|
||||||
{ sets p1 to nil }
|
{ sets p1 to nil }
|
||||||
Function GetNextInstruction(Current: tai; Var Next: tai): Boolean;
|
class Function GetNextInstruction(Current: tai; Var Next: tai): Boolean;
|
||||||
{ gets the previous tai object after current that contains info }
|
{ gets the previous tai object after current that contains info }
|
||||||
{ relevant to the optimizer in last. If there is none, it retuns }
|
{ relevant to the optimizer in last. If there is none, it retuns }
|
||||||
{ false and sets last to nil }
|
{ false and sets last to nil }
|
||||||
@ -175,7 +175,7 @@ unit aoptbase;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function TAOptBase.GetNextInstruction(Current: tai; Var Next: tai): Boolean;
|
class Function TAOptBase.GetNextInstruction(Current: tai; Var Next: tai): Boolean;
|
||||||
Begin
|
Begin
|
||||||
Repeat
|
Repeat
|
||||||
Current := tai(Current.Next);
|
Current := tai(Current.Next);
|
||||||
|
@ -265,12 +265,12 @@ Unit AoptObj;
|
|||||||
Procedure CreateUsedRegs(var regs: TAllUsedRegs);
|
Procedure CreateUsedRegs(var regs: TAllUsedRegs);
|
||||||
Procedure ClearUsedRegs;
|
Procedure ClearUsedRegs;
|
||||||
Procedure UpdateUsedRegs(p : Tai);
|
Procedure UpdateUsedRegs(p : Tai);
|
||||||
procedure UpdateUsedRegs(var Regs: TAllUsedRegs; p: Tai);
|
class procedure UpdateUsedRegs(var Regs: TAllUsedRegs; p: Tai);
|
||||||
Function CopyUsedRegs(var dest : TAllUsedRegs) : boolean;
|
Function CopyUsedRegs(var dest : TAllUsedRegs) : boolean;
|
||||||
Procedure ReleaseUsedRegs(const regs : TAllUsedRegs);
|
class Procedure ReleaseUsedRegs(const regs : TAllUsedRegs);
|
||||||
Function RegInUsedRegs(reg : TRegister;regs : TAllUsedRegs) : boolean;
|
class Function RegInUsedRegs(reg : TRegister;regs : TAllUsedRegs) : boolean;
|
||||||
Procedure IncludeRegInUsedRegs(reg : TRegister;var regs : TAllUsedRegs);
|
class Procedure IncludeRegInUsedRegs(reg : TRegister;var regs : TAllUsedRegs);
|
||||||
Procedure ExcludeRegFromUsedRegs(reg: TRegister;var regs : TAllUsedRegs);
|
class Procedure ExcludeRegFromUsedRegs(reg: TRegister;var regs : TAllUsedRegs);
|
||||||
|
|
||||||
Function GetAllocationString(const regs : TAllUsedRegs) : string;
|
Function GetAllocationString(const regs : TAllUsedRegs) : string;
|
||||||
|
|
||||||
@ -893,7 +893,7 @@ Unit AoptObj;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TAOptObj.UpdateUsedRegs(var Regs : TAllUsedRegs;p : Tai);
|
class procedure TAOptObj.UpdateUsedRegs(var Regs : TAllUsedRegs;p : Tai);
|
||||||
var
|
var
|
||||||
i : TRegisterType;
|
i : TRegisterType;
|
||||||
begin
|
begin
|
||||||
@ -912,7 +912,7 @@ Unit AoptObj;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TAOptObj.ReleaseUsedRegs(const regs: TAllUsedRegs);
|
class procedure TAOptObj.ReleaseUsedRegs(const regs: TAllUsedRegs);
|
||||||
var
|
var
|
||||||
i : TRegisterType;
|
i : TRegisterType;
|
||||||
begin
|
begin
|
||||||
@ -921,20 +921,20 @@ Unit AoptObj;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function TAOptObj.RegInUsedRegs(reg : TRegister;regs : TAllUsedRegs) : boolean;
|
class Function TAOptObj.RegInUsedRegs(reg : TRegister;regs : TAllUsedRegs) : boolean;
|
||||||
begin
|
begin
|
||||||
result:=regs[getregtype(reg)].IsUsed(reg);
|
result:=regs[getregtype(reg)].IsUsed(reg);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TAOptObj.IncludeRegInUsedRegs(reg: TRegister;
|
class procedure TAOptObj.IncludeRegInUsedRegs(reg: TRegister;
|
||||||
var regs: TAllUsedRegs);
|
var regs: TAllUsedRegs);
|
||||||
begin
|
begin
|
||||||
include(regs[getregtype(reg)].UsedRegs,getsupreg(Reg));
|
include(regs[getregtype(reg)].UsedRegs,getsupreg(Reg));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TAOptObj.ExcludeRegFromUsedRegs(reg: TRegister;
|
class procedure TAOptObj.ExcludeRegFromUsedRegs(reg: TRegister;
|
||||||
var regs: TAllUsedRegs);
|
var regs: TAllUsedRegs);
|
||||||
begin
|
begin
|
||||||
exclude(regs[getregtype(reg)].UsedRegs,getsupreg(Reg));
|
exclude(regs[getregtype(reg)].UsedRegs,getsupreg(Reg));
|
||||||
|
@ -47,8 +47,8 @@ unit aoptx86;
|
|||||||
procedure DebugMsg(const s : string; p : tai);inline;
|
procedure DebugMsg(const s : string; p : tai);inline;
|
||||||
|
|
||||||
procedure AllocRegBetween(reg : tregister; p1,p2 : tai;var initialusedregs : TAllUsedRegs);
|
procedure AllocRegBetween(reg : tregister; p1,p2 : tai;var initialusedregs : TAllUsedRegs);
|
||||||
function IsExitCode(p : tai) : boolean;
|
class function IsExitCode(p : tai) : boolean;
|
||||||
function isFoldableArithOp(hp1 : taicpu; reg : tregister) : boolean;
|
class function isFoldableArithOp(hp1 : taicpu; reg : tregister) : boolean;
|
||||||
procedure RemoveLastDeallocForFuncRes(p : tai);
|
procedure RemoveLastDeallocForFuncRes(p : tai);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -329,7 +329,7 @@ unit aoptx86;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TX86AsmOptimizer.IsExitCode(p : tai) : boolean;
|
class function TX86AsmOptimizer.IsExitCode(p : tai) : boolean;
|
||||||
var
|
var
|
||||||
hp2,hp3 : tai;
|
hp2,hp3 : tai;
|
||||||
begin
|
begin
|
||||||
@ -358,7 +358,7 @@ unit aoptx86;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TX86AsmOptimizer.isFoldableArithOp(hp1: taicpu; reg: tregister): boolean;
|
class function TX86AsmOptimizer.isFoldableArithOp(hp1: taicpu; reg: tregister): boolean;
|
||||||
begin
|
begin
|
||||||
isFoldableArithOp := False;
|
isFoldableArithOp := False;
|
||||||
case hp1.opcode of
|
case hp1.opcode of
|
||||||
|
Loading…
Reference in New Issue
Block a user