Use proper syntax when emitting UAL VFP instructions for all postfix types.

Fixed postfix of VSQRT instruction.

git-svn-id: branches/laksen/armiw@29591 -
This commit is contained in:
Jeppe Johansen 2015-02-01 09:38:45 +00:00
parent db401f0371
commit 60b3ea8038
2 changed files with 11 additions and 4 deletions

View File

@ -327,7 +327,7 @@ unit agarmgas;
if taicpu(hp).ops = 0 then
s:=#9+gas_op2str[op]+cond2str[taicpu(hp).condition]+oppostfix2str[taicpu(hp).oppostfix]
else if (taicpu(hp).opcode>=A_VABS) and (taicpu(hp).opcode<=A_VSUB) then
else if taicpu(hp).oppostfix in [PF_8..PF_U32F64] then
s:=#9+gas_op2str[op]+cond2str[taicpu(hp).condition]+oppostfix2str[taicpu(hp).oppostfix]
else
s:=#9+gas_op2str[op]+oppostfix2str[taicpu(hp).oppostfix]+cond2str[taicpu(hp).condition]+postfix; // Conditional infixes are deprecated in unified syntax

View File

@ -299,7 +299,7 @@ implementation
procedure tarminlinenode.second_sqrt_real;
var
singleprec: boolean;
op: TAsmOp;
pf: TOpPostfix;
begin
load_fpu_location(singleprec);
case current_settings.fputype of
@ -309,9 +309,16 @@ implementation
current_asmdata.CurrAsmList.concat(setoppostfix(taicpu.op_reg_reg(A_SQT,location.register,left.location.register),get_fpu_postfix(resultdef)));
fpu_vfpv2,
fpu_vfpv3,
fpu_vfpv3_d16,
fpu_vfpv3_d16:
begin
if singleprec then
pf:=PF_F32
else
pf:=PF_F64;
current_asmdata.CurrAsmList.concat(setoppostfix(taicpu.op_reg_reg(A_VSQRT,location.register,left.location.register),pf));
end;
fpu_fpv4_s16:
current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(A_VSQRT,location.register,left.location.register));
current_asmdata.CurrAsmList.concat(setoppostfix(taicpu.op_reg_reg(A_VSQRT,location.register,left.location.register), PF_F32));
else
internalerror(2009111402);
end;