mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 19:19:19 +02:00
* handle 3 operand opcodes the same as 2 operand opcodes, the
third operand can only be a const or register CL, so it doesn't affect spilling * support shrd/shld that don't allow memory operands
This commit is contained in:
parent
62f93d3473
commit
ec04a5a899
@ -214,8 +214,12 @@ implementation
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
2:
|
||||
2,
|
||||
3 :
|
||||
begin
|
||||
{ Opcodes with 3 registers are shrd/shld, where the 3rd operand is const or CL,
|
||||
that doesn't need spilling }
|
||||
|
||||
{ First spill the registers from the references. This is
|
||||
required because the reference can be moved from this instruction
|
||||
to a MOV instruction when spilling of the register operand is done }
|
||||
@ -404,6 +408,7 @@ implementation
|
||||
) then
|
||||
begin
|
||||
case opcode of
|
||||
A_SHLD,A_SHRD,
|
||||
A_IMUL :
|
||||
begin
|
||||
{Yikes! We just changed the destination register into
|
||||
@ -475,8 +480,6 @@ implementation
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
3:
|
||||
internalerror(200409201);
|
||||
else
|
||||
internalerror(200409202);
|
||||
end;
|
||||
@ -616,7 +619,13 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 2004-09-26 07:15:07 florian
|
||||
Revision 1.6 2004-09-27 14:49:45 peter
|
||||
* handle 3 operand opcodes the same as 2 operand opcodes, the
|
||||
third operand can only be a const or register CL, so it doesn't
|
||||
affect spilling
|
||||
* support shrd/shld that don't allow memory operands
|
||||
|
||||
Revision 1.5 2004/09/26 07:15:07 florian
|
||||
* ie checking in spilling code improved
|
||||
|
||||
Revision 1.4 2004/06/20 08:55:32 florian
|
||||
|
Loading…
Reference in New Issue
Block a user