mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-18 02:59:28 +02:00
Use ldc1 and sdc1 for big endian mips CPU directly
git-svn-id: trunk@21670 -
This commit is contained in:
parent
d2dc860b1b
commit
f9930e3f46
@ -229,35 +229,51 @@ unit cpugas;
|
||||
end;
|
||||
A_LDC1:
|
||||
begin
|
||||
tmpfpu := getopstr(taicpu(hp).oper[0]^);
|
||||
s := #9 + gas_op2str[A_LWC1] + #9 + tmpfpu + ',' + getopstr(taicpu(hp).oper[1]^); // + '(' + getopstr(taicpu(hp).oper[1]^) + ')';
|
||||
owner.AsmWriteLn(s);
|
||||
if (target_info.endian = endian_big) then
|
||||
begin
|
||||
s := #9 + gas_op2str[A_LDC1] + #9 + getopstr(taicpu(hp).oper[0]^)
|
||||
+ ',' + getopstr(taicpu(hp).oper[1]^);
|
||||
end
|
||||
else
|
||||
begin
|
||||
tmpfpu := getopstr(taicpu(hp).oper[0]^);
|
||||
s := #9 + gas_op2str[A_LWC1] + #9 + tmpfpu + ',' + getopstr(taicpu(hp).oper[1]^); // + '(' + getopstr(taicpu(hp).oper[1]^) + ')';
|
||||
owner.AsmWriteLn(s);
|
||||
|
||||
{ bug if $f9/$f19
|
||||
tmpfpu_len := length(tmpfpu);
|
||||
tmpfpu[tmpfpu_len] := succ(tmpfpu[tmpfpu_len]);
|
||||
|
||||
}
|
||||
r := taicpu(hp).oper[0]^.reg;
|
||||
setsupreg(r, getsupreg(r) + 1);
|
||||
tmpfpu := gas_regname(r);
|
||||
s := #9 + gas_op2str[A_LWC1] + #9 + tmpfpu + ',' + getopstr_4(taicpu(hp).oper[1]^); // + '(' + getopstr(taicpu(hp).oper[1]^) + ')';
|
||||
r := taicpu(hp).oper[0]^.reg;
|
||||
setsupreg(r, getsupreg(r) + 1);
|
||||
tmpfpu := gas_regname(r);
|
||||
s := #9 + gas_op2str[A_LWC1] + #9 + tmpfpu + ',' + getopstr_4(taicpu(hp).oper[1]^); // + '(' + getopstr(taicpu(hp).oper[1]^) + ')';
|
||||
end;
|
||||
owner.AsmWriteLn(s);
|
||||
end;
|
||||
A_SDC1:
|
||||
begin
|
||||
tmpfpu := getopstr(taicpu(hp).oper[0]^);
|
||||
s := #9 + gas_op2str[A_SWC1] + #9 + tmpfpu + ',' + getopstr(taicpu(hp).oper[1]^); //+ ',' + getopstr(taicpu(hp).oper[2]^) + '(' + getopstr(taicpu(hp).oper[1]^) + ')';
|
||||
owner.AsmWriteLn(s);
|
||||
if (target_info.endian = endian_big) then
|
||||
begin
|
||||
s := #9 + gas_op2str[A_SDC1] + #9 + getopstr(taicpu(hp).oper[0]^)
|
||||
+ ',' + getopstr(taicpu(hp).oper[1]^);
|
||||
end
|
||||
else
|
||||
begin
|
||||
tmpfpu := getopstr(taicpu(hp).oper[0]^);
|
||||
s := #9 + gas_op2str[A_SWC1] + #9 + tmpfpu + ',' + getopstr(taicpu(hp).oper[1]^); //+ ',' + getopstr(taicpu(hp).oper[2]^) + '(' + getopstr(taicpu(hp).oper[1]^) + ')';
|
||||
owner.AsmWriteLn(s);
|
||||
|
||||
{
|
||||
tmpfpu_len := length(tmpfpu);
|
||||
tmpfpu[tmpfpu_len] := succ(tmpfpu[tmpfpu_len]);
|
||||
}
|
||||
r := taicpu(hp).oper[0]^.reg;
|
||||
setsupreg(r, getsupreg(r) + 1);
|
||||
tmpfpu := gas_regname(r);
|
||||
s := #9 + gas_op2str[A_SWC1] + #9 + tmpfpu + ',' + getopstr_4(taicpu(hp).oper[1]^); //+ ',' + getopstr(taicpu(hp).oper[2]^) + '(' + getopstr(taicpu(hp).oper[1]^) + ')';
|
||||
r := taicpu(hp).oper[0]^.reg;
|
||||
setsupreg(r, getsupreg(r) + 1);
|
||||
tmpfpu := gas_regname(r);
|
||||
s := #9 + gas_op2str[A_SWC1] + #9 + tmpfpu + ',' + getopstr_4(taicpu(hp).oper[1]^); //+ ',' + getopstr(taicpu(hp).oper[2]^) + '(' + getopstr(taicpu(hp).oper[1]^) + ')';
|
||||
end;
|
||||
owner.AsmWriteLn(s);
|
||||
end;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user