mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-14 14:29:14 +02:00
+ implemented sqrt via the f32.sqrt and f64.sqrt instructions
This commit is contained in:
parent
6e6c946e0f
commit
95243ed6ed
@ -34,6 +34,8 @@ interface
|
|||||||
|
|
||||||
twasminlinenode = class(tcginlinenode)
|
twasminlinenode = class(tcginlinenode)
|
||||||
private
|
private
|
||||||
|
function first_sqrt_real:tnode;override;
|
||||||
|
procedure second_sqrt_real;override;
|
||||||
procedure second_high; override;
|
procedure second_high; override;
|
||||||
procedure second_memory_size;
|
procedure second_memory_size;
|
||||||
procedure second_memory_grow;
|
procedure second_memory_grow;
|
||||||
@ -64,6 +66,35 @@ implementation
|
|||||||
twasminlinenode
|
twasminlinenode
|
||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
|
function twasminlinenode.first_sqrt_real: tnode;
|
||||||
|
begin
|
||||||
|
expectloc:=LOC_FPUREGISTER;
|
||||||
|
result:=nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure twasminlinenode.second_sqrt_real;
|
||||||
|
begin
|
||||||
|
secondpass(left);
|
||||||
|
hlcg.location_force_fpureg(current_asmdata.CurrAsmList,left.location,left.resultdef,true);
|
||||||
|
|
||||||
|
thlcgwasm(hlcg).a_load_loc_stack(current_asmdata.CurrAsmList,left.resultdef,left.location);
|
||||||
|
|
||||||
|
case left.location.size of
|
||||||
|
OS_F32:
|
||||||
|
current_asmdata.CurrAsmList.Concat(taicpu.op_none(a_f32_sqrt));
|
||||||
|
OS_F64:
|
||||||
|
current_asmdata.CurrAsmList.Concat(taicpu.op_none(a_f64_sqrt));
|
||||||
|
else
|
||||||
|
internalerror(2021092901);
|
||||||
|
end;
|
||||||
|
|
||||||
|
location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
|
||||||
|
location.register:=hlcg.getregisterfordef(current_asmdata.CurrAsmList,resultdef);
|
||||||
|
thlcgwasm(hlcg).a_load_stack_loc(current_asmdata.CurrAsmList,resultdef,location);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure twasminlinenode.second_high;
|
procedure twasminlinenode.second_high;
|
||||||
var
|
var
|
||||||
hightype: TWasmBasicType;
|
hightype: TWasmBasicType;
|
||||||
|
Loading…
Reference in New Issue
Block a user