mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 15:39:29 +02:00
+ tcg.a_loadfpu_intreg_reg, make use of it in tcg.a_load_cgparaloc_anyreg
git-svn-id: trunk@36717 -
This commit is contained in:
parent
dd3d62425c
commit
bccc2f6863
@ -264,6 +264,8 @@ unit cgobj;
|
||||
procedure a_loadfpu_reg_cgpara(list : TAsmList;size : tcgsize;const r : tregister;const cgpara : TCGPara);virtual;
|
||||
procedure a_loadfpu_ref_cgpara(list : TAsmList;size : tcgsize;const ref : treference;const cgpara : TCGPara);virtual;
|
||||
|
||||
procedure a_loadfpu_intreg_reg(list: TAsmList; fromsize, tosize : tcgsize; intreg, fpureg: tregister); virtual;
|
||||
|
||||
{ vector register move instructions }
|
||||
procedure a_loadmm_reg_reg(list: TAsmList; fromsize, tosize : tcgsize;reg1, reg2: tregister;shuffle : pmmshuffle); virtual;
|
||||
procedure a_loadmm_ref_reg(list: TAsmList; fromsize, tosize : tcgsize;const ref: treference; reg: tregister;shuffle : pmmshuffle); virtual;
|
||||
@ -1158,6 +1160,8 @@ implementation
|
||||
a_load_reg_reg(list,paraloc.size,regsize,paraloc.register,reg);
|
||||
R_MMREGISTER:
|
||||
a_loadmm_intreg_reg(list,paraloc.size,regsize,paraloc.register,reg,mms_movescalar);
|
||||
R_FPUREGISTER:
|
||||
a_loadfpu_intreg_reg(list,paraloc.size,regsize,paraloc.register,reg);
|
||||
else
|
||||
internalerror(2009112422);
|
||||
end;
|
||||
@ -1689,6 +1693,21 @@ implementation
|
||||
end;
|
||||
|
||||
|
||||
procedure tcg.a_loadfpu_intreg_reg(list : TAsmList; fromsize,tosize : tcgsize; intreg,fpureg : tregister);
|
||||
var
|
||||
tmpref: treference;
|
||||
begin
|
||||
if not(tcgsize2size[fromsize] in [4,8]) or
|
||||
not(tcgsize2size[tosize] in [4,8]) or
|
||||
(tcgsize2size[fromsize]<>tcgsize2size[tosize]) then
|
||||
internalerror(2017070902);
|
||||
tg.gettemp(list,tcgsize2size[fromsize],tcgsize2size[fromsize],tt_normal,tmpref);
|
||||
a_load_reg_ref(list,fromsize,fromsize,intreg,tmpref);
|
||||
a_loadfpu_ref_reg(list,tosize,tosize,tmpref,fpureg);
|
||||
tg.ungettemp(list,tmpref);
|
||||
end;
|
||||
|
||||
|
||||
procedure tcg.a_op_const_ref(list : TAsmList; Op: TOpCG; size: TCGSize; a: tcgint; const ref: TReference);
|
||||
var
|
||||
tmpreg : tregister;
|
||||
|
Loading…
Reference in New Issue
Block a user