+ MIPS: initial target-specific unary minus node.

git-svn-id: trunk@24417 -
This commit is contained in:
sergei 2013-05-04 07:19:08 +00:00
parent 17e7ef0d28
commit 1f8bd4a2d1

View File

@ -28,7 +28,7 @@ unit ncpumat;
interface
uses
node, nmat, ncgmat;
node, nmat, ncgmat, cgbase;
type
tMIPSELmoddivnode = class(tmoddivnode)
@ -45,6 +45,10 @@ type
procedure second_boolean; override;
end;
TMIPSunaryminusnode = class(tcgunaryminusnode)
procedure emit_float_sign_change(r: tregister; _size : tcgsize);override;
end;
implementation
uses
@ -54,7 +58,7 @@ uses
aasmbase, aasmcpu, aasmtai, aasmdata,
defutil,
procinfo,
cgbase, cgobj, hlcgobj, pass_2,
cgobj, hlcgobj, pass_2,
ncon,
cpubase,
ncgutil, cgcpu, cgutils;
@ -322,8 +326,26 @@ begin
end;
{*****************************************************************************
TMIPSunaryminusnode
*****************************************************************************}
procedure TMIPSunaryminusnode.emit_float_sign_change(r: tregister; _size : tcgsize);
begin
case _size of
OS_F32:
current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(A_NEG_s,r,r));
OS_F64:
current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(A_NEG_d,r,r));
else
internalerror(2013030501);
end;
end;
begin
cmoddivnode := tMIPSELmoddivnode;
cshlshrnode := tMIPSELshlshrnode;
cnotnode := tMIPSELnotnode;
cunaryminusnode := TMIPSunaryminusnode;
end.