mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 16:09:25 +02:00
* more powerpc fixes
+ dummy tcgvecnode
This commit is contained in:
parent
3fe0229843
commit
463b355ba3
@ -38,7 +38,7 @@ interface
|
|||||||
procedure pass_2;override;
|
procedure pass_2;override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ti386vecnode = class(tvecnode)
|
ti386vecnode = class(tcgvecnode)
|
||||||
procedure pass_2;override;
|
procedure pass_2;override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -101,20 +101,7 @@ implementation
|
|||||||
|
|
||||||
procedure ti386vecnode.pass_2;
|
procedure ti386vecnode.pass_2;
|
||||||
|
|
||||||
function get_mul_size:longint;
|
procedure calc_emit_mul;
|
||||||
begin
|
|
||||||
if nf_memindex in flags then
|
|
||||||
get_mul_size:=1
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
if (left.resulttype.def.deftype=arraydef) then
|
|
||||||
get_mul_size:=tarraydef(left.resulttype.def).elesize
|
|
||||||
else
|
|
||||||
get_mul_size:=resulttype.def.size;
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure calc_emit_mul;
|
|
||||||
var
|
var
|
||||||
l1,l2 : longint;
|
l1,l2 : longint;
|
||||||
begin
|
begin
|
||||||
@ -520,7 +507,11 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.38 2002-07-20 11:58:04 florian
|
Revision 1.39 2002-07-28 21:34:31 florian
|
||||||
|
* more powerpc fixes
|
||||||
|
+ dummy tcgvecnode
|
||||||
|
|
||||||
|
Revision 1.38 2002/07/20 11:58:04 florian
|
||||||
* types.pas renamed to defbase.pas because D6 contains a types
|
* types.pas renamed to defbase.pas because D6 contains a types
|
||||||
unit so this would conflicts if D6 programms are compiled
|
unit so this would conflicts if D6 programms are compiled
|
||||||
+ Willamette/SSE2 instructions to assembler added
|
+ Willamette/SSE2 instructions to assembler added
|
||||||
|
@ -30,7 +30,7 @@ unit ncgmem;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
node,nmem;
|
node,nmem,cpuinfo;
|
||||||
|
|
||||||
type
|
type
|
||||||
tcgloadvmtnode = class(tloadvmtnode)
|
tcgloadvmtnode = class(tloadvmtnode)
|
||||||
@ -69,6 +69,13 @@ interface
|
|||||||
procedure pass_2;override;
|
procedure pass_2;override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
tcgvecnode = class(tvecnode)
|
||||||
|
function get_mul_size : aword;
|
||||||
|
procedure second_wideansistring;virtual;
|
||||||
|
procedure second_dynamicarray;virtual;
|
||||||
|
procedure pass_2;override;
|
||||||
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
@ -78,7 +85,7 @@ implementation
|
|||||||
aasmbase,aasmtai,aasmcpu,
|
aasmbase,aasmtai,aasmcpu,
|
||||||
cgbase,pass_2,
|
cgbase,pass_2,
|
||||||
nld,ncon,nadd,
|
nld,ncon,nadd,
|
||||||
cpuinfo,cpubase,cpupara,
|
cpubase,cpupara,
|
||||||
cgobj,cgcpu,
|
cgobj,cgcpu,
|
||||||
tgobj,rgobj
|
tgobj,rgobj
|
||||||
{$ifdef GDB}
|
{$ifdef GDB}
|
||||||
@ -453,6 +460,39 @@ implementation
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{*****************************************************************************
|
||||||
|
TCGVECNODE
|
||||||
|
*****************************************************************************}
|
||||||
|
|
||||||
|
function tcgvecnode.get_mul_size : aword;
|
||||||
|
begin
|
||||||
|
if nf_memindex in flags then
|
||||||
|
get_mul_size:=1
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if (left.resulttype.def.deftype=arraydef) then
|
||||||
|
get_mul_size:=tarraydef(left.resulttype.def).elesize
|
||||||
|
else
|
||||||
|
get_mul_size:=resulttype.def.size;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure tcgvecnode.second_wideansistring;
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure tcgvecnode.second_dynamicarray;
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure tcgvecnode.pass_2;
|
||||||
|
begin
|
||||||
|
{!!!!}
|
||||||
|
writeln('FIX ME: tcgvecnode.pass_2');
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
cloadvmtnode:=tcgloadvmtnode;
|
cloadvmtnode:=tcgloadvmtnode;
|
||||||
chnewnode:=tcghnewnode;
|
chnewnode:=tcghnewnode;
|
||||||
@ -463,10 +503,15 @@ begin
|
|||||||
csubscriptnode:=tcgsubscriptnode;
|
csubscriptnode:=tcgsubscriptnode;
|
||||||
cselfnode:=tcgselfnode;
|
cselfnode:=tcgselfnode;
|
||||||
cwithnode:=tcgwithnode;
|
cwithnode:=tcgwithnode;
|
||||||
|
cvecnode:=tcgvecnode;
|
||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.17 2002-07-11 14:41:28 florian
|
Revision 1.18 2002-07-28 21:34:31 florian
|
||||||
|
* more powerpc fixes
|
||||||
|
+ dummy tcgvecnode
|
||||||
|
|
||||||
|
Revision 1.17 2002/07/11 14:41:28 florian
|
||||||
* start of the new generic parameter handling
|
* start of the new generic parameter handling
|
||||||
|
|
||||||
Revision 1.16 2002/07/07 09:52:32 florian
|
Revision 1.16 2002/07/07 09:52:32 florian
|
||||||
|
@ -191,6 +191,15 @@ const
|
|||||||
a_load_reg_ref(list,size,tmpreg,ref);
|
a_load_reg_ref(list,size,tmpreg,ref);
|
||||||
free_scratch_reg(list,tmpreg);
|
free_scratch_reg(list,tmpreg);
|
||||||
end;
|
end;
|
||||||
|
LOC_FPUREGISTER:
|
||||||
|
case size of
|
||||||
|
OS_32:
|
||||||
|
a_loadfpu_ref_reg(list,OS_F32,r,locpara.register);
|
||||||
|
OS_64:
|
||||||
|
a_loadfpu_ref_reg(list,OS_F64,r,locpara.register);
|
||||||
|
else
|
||||||
|
internalerror(2002072801);
|
||||||
|
end;
|
||||||
else
|
else
|
||||||
internalerror(2002081103);
|
internalerror(2002081103);
|
||||||
end;
|
end;
|
||||||
@ -363,8 +372,19 @@ const
|
|||||||
op: tasmop;
|
op: tasmop;
|
||||||
ref2: treference;
|
ref2: treference;
|
||||||
begin
|
begin
|
||||||
if not(size in [OS_F32,OS_F64]) then
|
{ several functions call this procedure with OS_32 or OS_64 }
|
||||||
internalerror(200201121);
|
{ so this makes life easier (FK) }
|
||||||
|
case size of
|
||||||
|
OS_32,OS_F32:
|
||||||
|
size:=OS_F32;
|
||||||
|
OS_64,OS_F64:
|
||||||
|
size:=OS_F64;
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
writeln(ord(size));
|
||||||
|
internalerror(200201121);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
ref2 := ref;
|
ref2 := ref;
|
||||||
fixref(list,ref2);
|
fixref(list,ref2);
|
||||||
op := fpuloadinstr[size,ref2.index <> R_NO,false];
|
op := fpuloadinstr[size,ref2.index <> R_NO,false];
|
||||||
@ -1393,7 +1413,11 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.27 2002-07-28 16:01:59 jonas
|
Revision 1.28 2002-07-28 21:34:31 florian
|
||||||
|
* more powerpc fixes
|
||||||
|
+ dummy tcgvecnode
|
||||||
|
|
||||||
|
Revision 1.27 2002/07/28 16:01:59 jonas
|
||||||
+ tcg64fppc.a_op64_const_reg_reg() and tcg64fppc.a_op64_reg_reg_reg()
|
+ tcg64fppc.a_op64_const_reg_reg() and tcg64fppc.a_op64_reg_reg_reg()
|
||||||
* several fixes, most notably in a_load_reg_reg(): it didn't do any
|
* several fixes, most notably in a_load_reg_reg(): it didn't do any
|
||||||
conversion from smaller to larger sizes or vice versa
|
conversion from smaller to larger sizes or vice versa
|
||||||
|
Loading…
Reference in New Issue
Block a user