mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-05 07:38:27 +02:00
+ fld reg;fxxx to fxxxr reg optimization
This commit is contained in:
parent
9793c4eee9
commit
ac20c15ef4
@ -304,6 +304,41 @@ Begin
|
||||
End;
|
||||
A_FLD:
|
||||
Begin
|
||||
If (Paicpu(p)^.oper[0].typ = top_reg) And
|
||||
GetNextInstruction(p, hp1) And
|
||||
(hp1^.typ = Ait_Instruction) And
|
||||
(Paicpu(hp1)^.oper[0].typ = top_reg) And
|
||||
(Paicpu(hp1)^.oper[1].typ = top_reg) And
|
||||
(Paicpu(hp1)^.oper[0].reg = R_ST) And
|
||||
(Paicpu(hp1)^.oper[1].reg = R_ST1) Then
|
||||
{ change to
|
||||
fld reg fxxx reg,st
|
||||
fxxxp st, st1 (hp1)
|
||||
Remark: non commutative operations must be reversed!
|
||||
}
|
||||
begin
|
||||
Case Paicpu(hp1)^.opcode Of
|
||||
A_FMULP,A_FADDP,
|
||||
A_FSUBP,A_FDIVP,A_FSUBRP,A_FDIVRP:
|
||||
begin
|
||||
Case Paicpu(hp1)^.opcode Of
|
||||
A_FADDP: Paicpu(hp1)^.opcode := A_FADD;
|
||||
A_FMULP: Paicpu(hp1)^.opcode := A_FMUL;
|
||||
A_FSUBP: Paicpu(hp1)^.opcode := A_FSUBR;
|
||||
A_FSUBRP: Paicpu(hp1)^.opcode := A_FSUB;
|
||||
A_FDIVP: Paicpu(hp1)^.opcode := A_FDIVR;
|
||||
A_FDIVRP: Paicpu(hp1)^.opcode := A_FDIV;
|
||||
End;
|
||||
Paicpu(hp1)^.oper[0].reg := Paicpu(p)^.oper[0].reg;
|
||||
Paicpu(hp1)^.oper[1].reg := R_ST;
|
||||
AsmL^.Remove(p);
|
||||
Dispose(p, Done);
|
||||
p := hp1;
|
||||
Continue;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
else
|
||||
If (Paicpu(p)^.oper[0].typ = top_ref) And
|
||||
GetNextInstruction(p, hp2) And
|
||||
(hp2^.typ = Ait_Instruction) And
|
||||
@ -1568,7 +1603,10 @@ End.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.64 1999-08-25 12:00:02 jonas
|
||||
Revision 1.65 1999-09-05 14:27:19 florian
|
||||
+ fld reg;fxxx to fxxxr reg optimization
|
||||
|
||||
Revision 1.64 1999/08/25 12:00:02 jonas
|
||||
* changed pai386, paippc and paiapha (same for tai*) to paicpu (taicpu)
|
||||
|
||||
Revision 1.63 1999/08/23 10:20:46 jonas
|
||||
|
Loading…
Reference in New Issue
Block a user