mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 09:26:15 +02:00
+ implement tcg.a_load_cgparaloc_ref for un-even sizes and little endian systems as well
git-svn-id: trunk@36977 -
This commit is contained in:
parent
f65a36685c
commit
4a54a88cca
@ -1131,8 +1131,13 @@ implementation
|
|||||||
a_load_reg_ref(list,paraloc.size,OS_16,hreg,ref);
|
a_load_reg_ref(list,paraloc.size,OS_16,hreg,ref);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
{ little endian not implemented yet }
|
begin
|
||||||
Internalerror(2017081301);
|
a_load_reg_ref(list,paraloc.size,OS_16,hreg,ref);
|
||||||
|
href:=ref;
|
||||||
|
inc(href.offset,2);
|
||||||
|
a_op_const_reg_reg(list,OP_SHR,cgsize,16,hreg,hreg);
|
||||||
|
a_load_reg_ref(list,paraloc.size,OS_8,hreg,href);
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
5:
|
5:
|
||||||
begin
|
begin
|
||||||
@ -1145,8 +1150,13 @@ implementation
|
|||||||
a_load_reg_ref(list,paraloc.size,OS_32,hreg,ref);
|
a_load_reg_ref(list,paraloc.size,OS_32,hreg,ref);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
{ little endian not implemented yet }
|
begin
|
||||||
Internalerror(2017081302);
|
a_load_reg_ref(list,paraloc.size,OS_32,hreg,ref);
|
||||||
|
href:=ref;
|
||||||
|
inc(href.offset,4);
|
||||||
|
a_op_const_reg_reg(list,OP_SHR,cgsize,32,hreg,hreg);
|
||||||
|
a_load_reg_ref(list,paraloc.size,OS_8,hreg,href);
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
6:
|
6:
|
||||||
begin
|
begin
|
||||||
@ -1159,8 +1169,13 @@ implementation
|
|||||||
a_load_reg_ref(list,paraloc.size,OS_32,hreg,ref);
|
a_load_reg_ref(list,paraloc.size,OS_32,hreg,ref);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
{ little endian not implemented yet }
|
begin
|
||||||
Internalerror(2017081303);
|
a_load_reg_ref(list,paraloc.size,OS_32,hreg,ref);
|
||||||
|
href:=ref;
|
||||||
|
inc(href.offset,4);
|
||||||
|
a_op_const_reg_reg(list,OP_SHR,cgsize,32,hreg,hreg);
|
||||||
|
a_load_reg_ref(list,paraloc.size,OS_16,hreg,href);
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
7:
|
7:
|
||||||
begin
|
begin
|
||||||
@ -1179,8 +1194,18 @@ implementation
|
|||||||
a_load_reg_ref(list,paraloc.size,OS_32,hreg,ref);
|
a_load_reg_ref(list,paraloc.size,OS_32,hreg,ref);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
{ little endian not implemented yet }
|
begin
|
||||||
Internalerror(2017081304);
|
a_load_reg_ref(list,paraloc.size,OS_32,hreg,ref);
|
||||||
|
|
||||||
|
href:=ref;
|
||||||
|
inc(href.offset,4);
|
||||||
|
a_op_const_reg_reg(list,OP_SHR,cgsize,32,hreg,hreg);
|
||||||
|
a_load_reg_ref(list,paraloc.size,OS_16,hreg,href);
|
||||||
|
|
||||||
|
inc(href.offset,4);
|
||||||
|
a_op_const_reg_reg(list,OP_SHR,cgsize,16,hreg,hreg);
|
||||||
|
a_load_reg_ref(list,paraloc.size,OS_8,hreg,href);
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
else
|
else
|
||||||
{ other sizes not allowed }
|
{ other sizes not allowed }
|
||||||
|
Loading…
Reference in New Issue
Block a user